I'm trying to migrate user's content profiles (Drupal 6) to Profile2's profiles (Drupal 7) using the example from http://grasmash.com/article/migrate-classes-content-profile-profile2. When I try importing, I get the following error:
Migration failed with source plugin exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ctp.field_titul_pred_jmenem' in 'field list'
This is the migration class.
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 ...
Can anybody help me, please?
field_titul_pred_jmenem
in thecontent_type_clovek
table. Wouldn't it be something likefield_titul_pred_jmenem_value
instead?'skip' . '.users'
; just write'skip.users'
. (There is no need to concatenate two literal strings.)