স্থানান্তর ব্যর্থতা: ধারাটিতে অস্পষ্ট


9

আমি migrateপ্রথমবার মডিউলটির সাথে কাজ করছি এবং db_selectএপিআই-এর সাথে আমি কিছুটা কাজ করেছি , তবে আমি একটি ত্রুটির মধ্যে চলেছি।

আমি কিছু পুরানো লেবেলকে একটি ড্রুপাল ট্যাক্সনোমিতে রূপান্তর করার চেষ্টা করছি। আমি /admin/content/migrateপৃষ্ঠাটিতে ব্রাউজ করার সময় এটি আমার ক্যোয়ারীটি সঠিকভাবে করে এবং মাইগ্রেশন করা উচিত এমন সারিগুলির সঠিক সংখ্যা দেখায়। তবে, আমি যখন আসলে আমদানি চালানোর চেষ্টা করি তখন আমি এই ত্রুটিটি পাই:

উত্স প্লাগইন ব্যতিক্রম সহ অভিবাসন ব্যর্থ হয়েছে: এসকিউএলস্টেট [২৩০০০]: একীকরণের সীমাবদ্ধতা লঙ্ঘন: ১০৫২ ধারাটিতে লেবেলআইডি 'অস্পষ্ট

আমার লেবেল অভিবাসন শ্রেণিতে আমার কাছে কোডটি এখানে রয়েছে:

$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, কিন্তু এটি কার্যকর হয়নি।

উত্তর:


30

এটি বের করে!

মাইগ্রেট এসকিউএলএ্যাপে ক্ষেত্রটি সংজ্ঞায়িত করার সময় আমি ক্ষেত্রটির জন্য একটি টেবিলের নাম নির্ধারণ করতে পারি:

$this->map = new MigrateSQLMap($this->machineName,
    array(
        'labelId' => array(
            'type' => 'int',
            'not null' => TRUE,
            'alias' => 'l', // it's the letter small case "L", not the digit 1
        )
    ),
    MigrateDestinationTerm::getKeySchema()
);

'alias' => 'l'তোলে labelIdহয়ে l.labelIdক্যোয়ারিগুলিতে।


ধন্যবাদ। একই সমস্যা ছিল। আপনার উত্তরটি সঠিক হিসাবে চিহ্নিত করা উচিত।
Perisdr

একই সমস্যা ... এবং সমাধান পুরোপুরি কার্যকর করে। আমি এই এক উপর অনেক ঘন্টা ব্যয় করেছি! ফিক্স পোস্ট করার জন্য আপনাকে ধন্যবাদ।
সমুদ্র 26.2

আপনি এই বিড বিট জন্য একটি পদক প্রাপ্য।
ডাবলজোশ

1

আমি ভেবেছিলাম যে, তিনি অস্ত যাবার সময় aliasথেকে 1(অর্থাত, বুলিয়ান সত্য), কিন্তু একটি কারণ এটি একটি স্ট্রিং এর এর - প্রকৃত ওরফে যে, তাই যদি তুমি ওরফে হয় n, 'alias' => 'n'। এটি আসলে আমার প্রায় 1/2 ঘন্টা ব্যয় করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.