#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. - Отключите и включите ваш модуль для регистрации нового класса.