Не удалось выполнить миграцию с исключением исходного плагина: SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец
Я пытаюсь перенести профили контента пользователя (Drupal 6) в профили Profile2 (Drupal 7), используя пример из http://grasmash.com/article/migrate-classes-content-profile-profile2 . Когда я пытаюсь импортировать, я получаю следующую ошибку:
Миграция не удалась с исключением исходного плагина: SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец "ctp.field_titul_pred_jmenem" в "списке полей"
Это миграция класс.
class SkipProfile2Migration extends Migration {
public function __construct() {
parent::__construct();
$this->description = t('Migration of content profile into profile2 entities');
$this->map = new MigrateSQLMap($this->machineName,
array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => 'D6 Unique Node ID',
'alias' => 'n',
)
),
MigrateDestinationNode::getKeySchema(),
'default'
);
$query = Database::getConnection('default', 'legacy')
->select('node', 'n')
->fields('n', array('nid', 'vid', 'type', 'language', 'title', 'uid', 'status', 'created', 'changed', 'comment', 'promote', 'moderate', 'sticky', 'tnid', 'translate'))
->condition('n.type', 'profile', '=');
$query->join('skip' . '.node_revisions', 'nr', 'n.vid = nr.vid');
$query->addField('nr', 'body');
$query->addField('nr', 'teaser');
$query->addField('nr', 'format');
$query->join('skip' . '.users', 'u', 'n.uid = u.uid');
$query->addField('u', 'name');
$query->leftJoin('skip' . '.content_type_clovek', 'ctp', 'n.nid = ctp.nid AND n.vid = ctp.vid');
$query->addField('ctp','field_titul_pred_jmenem');
$query->addField('ctp','field_krestni_jmeno');
$query->addField('ctp','field_prijmeni');
$query->addField('ctp','field_titul_za_jmenem');
$query->addField('ctp','field_telefon');
$query->addField('ctp','field_email_source');
$query->addField('ctp','field_ulice');
$query->addField('ctp','field_cislo_popisne');
$query->addField('ctp','field_sidlo');
$query->addField('ctp','field_smerovaci_cislo');
$query->addField('ctp','field_funkce_cloveka');
$query->addField('ctp','field_pracoviste');
$query->addField('ctp','field_stat_iso');
$query->orderBy('n.nid', 'ASC');
$source_fields = array(
'nid' => t('The node ID of the page'),
'uid' => t('The user ID of a user'),
'lid' => t('The location ID of a location instance'),
);
// Create a MigrateSource object, which manages retrieving the input data.
$this->source = new MigrateSourceSQL($query, $source_fields);
$this->destination = new MigrateDestinationProfile2('clovek');
// FIELD MAPPINGS ...
Кто-нибудь может мне помочь, пожалуйста?
1 answers
На Drupal 6, работающем под управлением CCK, имена полей базы данных отличаются от имен полей CCK.
На моем тестовом сайте под управлением Drupal 6 я создал следующие поля CCK:
- страница field_code_page (текст)
- поле_со_автор (ссылка на пользователя)
-
Список Field_book_list (ссылка на узел)
Таблица базы данных, созданная из CCK для типа контента, содержащего эти поля, имеет следующую базу данных поля:
- значение field_code_page_value
- идентификатор поля_со_автора
-
Идентификатор Поля_бук_лист_нид
Весьма вероятно, что поле базы данных называется ctp.field_titul_pred_jmenem_value. Чтобы убедиться, вам следует проверить таблицу базы данных, так как поле базы данных может иметь другое имя, в зависимости от типа поля CCK.