मैं migrate
पहली बार मॉड्यूल के साथ काम कर रहा हूं और मैंने db_select
एपीआई के साथ थोड़ा काम किया है , लेकिन मैं एक त्रुटि में चल रहा हूं।
मैं कुछ पुराने लेबल को ड्रुपल टैक्सोनॉमी में बदलने की कोशिश कर रहा हूं। जब मैं /admin/content/migrate
पृष्ठ पर ब्राउज़ करता हूं, तो यह मेरी क्वेरी को सही ढंग से करता है और उन पंक्तियों की सही संख्या दिखाता है जिन्हें माइग्रेट किया जाना चाहिए। हालाँकि, जब मैं वास्तव में आयात को चलाने की कोशिश करता हूं, तो मुझे यह त्रुटि मिलती है:
स्रोत प्लग-इन अपवाद के साथ माइग्रेशन विफल हुआ: SQLSTATE [23000]: अखंडता बाधा उल्लंघन: 1052 कॉलम 'लेबलआईड' इन क्लॉज पर अस्पष्ट है
यहां मेरा लेबल माइग्रेशन क्लास में कोड है:
$this->map = new MigrateSQLMap($this->machineName,
array(
'labelId' => array('type' => 'int', 'not null' => TRUE)
),
MigrateDestinationTerm::getKeySchema()
);
$query = db_select('migrate_account_label', 'l')
->fields('l', array('labelId', 'label'))
;
$query->leftJoin('migrate_asset_labels_membership', 'lm', 'l.labelId = lm.labelId');
$query->leftJoin('migrate_asset', 'a', 'lm.assetId = a.assetId');
$query->addExpression('count(*)', 'num');
$query->condition('a.type', 'B');
$query->groupBy('l.labelId');
$query->groupBy('l.label');
$this->source = new MigrateSourceSQL($query);
// Set up our destination - terms in the vocabulary
$this->destination = new MigrateDestinationTerm('article_labels');
$this->addFieldMapping('name', 'label');
$this->addFieldMapping('description')
->defaultValue('');
यदि मैं leftJoin()
कॉल हटाता हूं तो जाहिर है कि on
स्टेटमेंट के बारे में त्रुटि दूर हो जाती है, लेकिन मुझे समझ नहीं आता कि कैसे labelId
अस्पष्ट है क्योंकि मैं इसे हमेशा टेबल एलीस के साथ संदर्भित कर रहा हूं।
कोई भी विचार जहां यह त्रुटि आ रही है? क्या यह शीर्ष पर MigrateSQLMap से आ रहा है? यदि हां, तो मैं labelId
इसे गैर-अस्पष्ट बनाने के लिए एक उपनाम के साथ कैसे संदर्भित कर सकता हूं ? मैंने इसे बनाने की कोशिश की l.labelId
, लेकिन यह काम नहीं किया।