Модуль миграции Drupal 7 показывает «Группы миграции не определены». Почему мой класс миграции не регистрируется?

#drupal #drupal-7 #migration #database-migration #data-migration

#drupal #drupal-7 #миграция #база данных-миграция #данные-миграция

Вопрос:

Я пытаюсь перенести содержимое (на данный момент, в частности, учетные записи пользователей) с устаревшего сайта на Drupal 7 с помощью модуля миграции Drupal, но по какой-то причине пользовательский класс миграции сайта не регистрируется. Единственным признаком того, что что-то не так, является отсутствие какого-либо вывода при запуске drush migrate-status и вывод «Группы миграции не определены» при посещении http://<drupal_root_url>/admin/content/migrate в веб-браузере. migrate Все модули , migrate_ui , и pinpics_migration были включены через панель администратора Drupal 7. Я пытался использовать drush для очистки всех кэшей и регистрации классов миграции, а также для регистрации классов миграции с помощью веб-интерфейса, но безрезультатно. drush был запущен из папки с settings.php файл /<drupal_root_path>/sites/default/

 drush cc all amp;amp; drush migrate-register amp;amp; drush migrate-status
  

У меня есть следующие файлы, расположенные в

 /<drupal_root_path>/sites/all/modules/custom/pinpics_migration/
  
  • pinpics_migration.info
  • pinpics_migration.migrate.inc
  • pinpics_migration.module

Я попытался поместить файл, содержащий реализацию пользовательского класса миграции pinpics_users.inc , в тот же каталог, что и файлы выше, а также в:

 /<drupal_root_path>/includes/
  

Вот содержимое файла:

pinpics_migration.info:

 <?php
name = "Pinpics Migration"
description = "Module to migrate legacy site to Drupal 7 site"
package = "Migration"
core = 7.x
dependencies[] = migrate
files[] = pinpics_migration.module
files[] = pinpics_users.inc
?>
  

pinpics_migration.migrate.inc:

 <?php
function pinpics_migration_migrate_api() {
    $api = array( 'api' => 2 );
    return $api;
}
?>
  

pinpics_migration.module:

 <?php
define("SOURCE_DATABASE", "pinpics_db");
?>
  

pinpics_users.inc: (Лишен некоторых вспомогательных функций и конкретных деталей реализации)

 <?php
/// Stripped some helper functions that were used by pinpicsUserMigration::prepareRow() below

class pinpicsUserMigration extends Migration {
    public function __construct() {
        parent::__construct(MigrateGroup::getInstance('user_migration_group'));
        $this->description = t('Migrate pinpics.com users');

        $source_fields = array(
            'uid' => t('User ID'),
            'roles' => t('The set of roles assigned to a user.'),
            'password' => t('MD5 hash of User Password'),
            'email' => t('User email address'),
            'name' => t('Username'),
            'created' => t('Timestamp that legacy account was created.'),
            'status' => t('The staus of the User account'),
            'logintime' => t('Timestamp that the User last logged in.')
        );

        $query = db_select(SOURCE_DATABASE.'.users', 'u')
            ->fields('u', array('uid', 'roles', 'password', 'email', 'name', 'created', 'logintime', 'status'))
            ->condition('status', '0', '=')
            ->condition('inactive', '0', '=')
            ->condition('email', '', '<>')
            ->condition('loginip', '', '<>')
            ->orderBy('uid', 'ASC');

        $this->source = new MigrateSourceSQL($query, $source_fields);
        $this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE));

        $this->map = new MigrateSQLMap($this->machineName,
            array(
                'uid' => array(
                    'type' => 'int',
                    'unsigned' => TRUE,
                    'non null' => TRUE,
                    'description' => 'Legacy Unique User ID',
                    'alias' => 'u',
                )
            ),
            MigrateDestinationUser::getKeySchema()
        );

        $this->addFieldMapping('uid', 'uid');
        $this->addFieldMapping('name', 'name');
        $this->addFieldMapping('pass', 'password');
        /// Many addFieldMapping() statement stripped out for brevity.
    }

    public function prepareRow($current_row) {
        /// Stripped implementation details for massaging data to prepare for Drupal 7.
        return TRUE;
    }
}
?>
  

Я новичок в Drupal и использовал следующие ссылки для реализации миграции.

С Drupal 6 на Drupal 7 через Migrate 2

Начало работы с миграцией

Кто-нибудь сталкивался с этой проблемой раньше или знает, как выяснить, что не так?

Ответ №1:

Попробуйте выполнить следующие действия:

  • Посетите страницу модулей сайтов /admin/modules , чтобы запустить восстановление кэшированного PHP.
  • Отключите и включите ваш модуль для регистрации нового класса.