将drupal 6迁移到drupal 7

时间:2011-07-08 12:59:51

标签: drupal drupal-7 drupal-6 migrate

基本上我们想将我们的drupal 6站点的一部分移动到我们的drupal 7版本。使用迁移模块。在使用他们的注释和分类法迁移155个节点时(2个词汇,其中一个是固定的,另一个是逗号分隔),最后30个失败给我这个错误:

291 Error PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'tid' at row 1: INSERT INTO {taxonomy_index} (nid, tid, sticky, created) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3); Array ( [:db_insert_placeholder_0] => 3057 [:db_insert_placeholder_1] => [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] => 1282050381 ) in taxonomy_field_insert() (line 1675 of /u01/facebase/drupal-7.0/modules/taxonomy/taxonomy.module).

291错误SQLSTATE [HY000]:常规错误:1366错误的整数值:''对于第1行的列'tid'

我正在使用此查询迁移我的术语:

$query = db_select("$this->_db.term_data", 'td')
  ->fields('td', array('tid', 'name', 'weight'))
  ->condition('v.vid', 7);
  $query->innerJoin("$this->_db.vocabulary", 'v', 'td.vid=v.vid');

我为2个词汇表做了这个,然后我只绘制了名称,格式和重量。然后我在迁移节点时使用此查询:

$query = db_select("$this->_db.node", 'n')
  ->fields('n', array('nid', 'vid', 'type', 'title', 'uid', 'status', 'created', 'changed', 'comment'))
  ->fields('tn', array('tid'))
  ->fields('nr', array('title', 'body', 'teaser'))
  ->condition('n.type', 'dev_content');

  $query->leftJoin("$this->_db.term_node", 'tn', 'tn.vid =n.vid');
  $query->leftJoin("$this->_db.node_revisions", 'nr', 'nr.vid = n.vid');
  $query->addExpression('GROUP_CONCAT(DISTINCT tn.tid)', 'term_list');
  $query->groupBy('n.nid');

然后我正在为每个词汇表映射term_list,如下所示:

$this->addFieldMapping('field_dev_tags', 'term_list')
 ->separator(',')
 ->sourceMigration('DevCenterTerm')
 ->arguments(array('source_type' => 'tid'));

$this->addFieldMapping('field_dev_category', 'term_list')
 ->separator(',')
 ->sourceMigration('DevCenterTermPrep')
 ->arguments(array('source_type' => 'tid'));

我知道这是由于这些条款而发生的,因为当我没有映射term_list时,所有节点都被创建,但那就是它。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于那些没有分配分类标准的节点,这是一个问题吗?如果是这种情况,请尝试将默认值添加到分类法字段映射。

    $this->addFieldMapping('field_dev_category', 'term_list')
 ->separator(',')
 ->sourceMigration('DevCenterTermPrep')
 ->arguments(array('source_type' => 'tid'))->defaultValue(12);

在beer.inc示例中,注释中记录了这一点:

  

如果提供了默认值,您也可以同时使用它们   除源字段外,默认值将应用于任何字段   源字段为空或NULL的行。