我正在尝试使用Drupal migrate模块将内容(特别是用户帐户)从一个遗留站点迁移到Drupal 7中,但是由于某些原因,自定义站点迁移类没有注册。唯一表明有问题的是在运行drush migrate-status
时缺少任何输出,并且在web浏览器中访问http://<drupal_root_url>/admin/content/migrate
时输出"No migration groups defined"。migrate
、migrate_ui
和pinpics_migration
模块都已通过Drupal 7管理仪表板启用。我尝试使用rush来清除所有缓存并注册迁移类,以及使用web UI注册迁移类,但无济于事。从包含settings.php文件/<drupal_root_path>/sites/default/
drush cc all && drush migrate-register && 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通过Migrate 2迁移到Drupal 7
迁移入门
有没有人遇到过这个问题,或者知道如何找出问题所在?
尝试以下步骤:
- 访问您的站点模块页面
/admin/modules
来触发缓存PHP的重建。 - 禁用并启用你的模块来注册一个新类