আমার একটি পরিস্থিতি ছিল যেখানে একটি আপডেট ফাংশন দ্বারা একটি টেবিল তৈরি হয়েছিল ( MYMODULE_update_7101
), তবে সেই টেবিলটি কোডে অ্যাক্সেস করা যাচ্ছিল কোথাও প্রতিটি ক্যাশে পরিষ্কার এবং প্রায় প্রতিটি ড্রাশ কল (এটি মূলত সমস্ত মেনুগুলির জন্য সত্তার ধরণের নাম পেয়েছিল এবং যাই হোক না কেন) অন্য)। রানিং প্রথমটির পরিবর্তে তৃতীয়ভাবে drush updatedb
চলছিল MYMODULE_update_7101
।
আমি @ মাকালেয়া এবং @ মোশে ওয়েটজম্যানের দ্বারা চালিত পরামর্শের সমাধানটি চেষ্টা করেছি:
drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'
দৌড়ানোর আগে drush updatedb
, তবে এটি কোনও উপকারে আসেনি - ড্রশ রান ব্যর্থ হয়েছিল কারণ updatedb
আবার চালানোর চেষ্টা করে MYMODULE_update_7101()
এবং এড়িয়ে গিয়ে ভুল করে বলেছে যে টেবিলটি ইতিমধ্যে বিদ্যমান রয়েছে। মূলত, উপরের কোডটি আপডেটটি চালিয়েছিল, তবে আপডেটটি যে পদ্ধতিতে চালিত হয়েছিল তা সিস্টেমে তার চিহ্ন রেখে যায় নি। সম্ভবত update.php
ডিবিতে মডিউলটির জন্য সর্বশেষতম সংস্করণ নম্বর সংরক্ষণের জন্য প্রতিটি আপডেট চালানোর পরে অন্যান্য সামগ্রীর পুরো গুচ্ছটি করতে হয় Pres
আমি update.php
দেখতে পেলাম কীভাবে এটি প্রতিটি আপডেট ফাংশনটি চালায় এবং এটি কী করে, কল করার জন্য একটি ফাংশন সন্ধান করছে যা আপডেট ফাংশনটি কল করবে এবং অন্যান্য সমস্ত স্টাফও করবে। আমি এখানে পৌঁছে শেষ:
include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);
যা আমি আসলে ড্রাশ নিয়ে ছুটে এসেছি:
drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'
এটি আপডেটটি চালিয়েছে, কোনও সমস্যা নেই, তবে আমার দৌড়ানোর সময় মাইমডুডল সংস্করণ 7101 এখনও আপডেট তালিকায় প্রদর্শিত হয়েছিল updatedb
, তবুও এটি ত্রুটিযুক্ত না হয়ে দৌড়েছিল এবং সাইটের পরিদর্শনটিতে সবকিছু ভাল দেখাচ্ছে।
কিছুটা হ্যাকি এবং 6 বছর দেরীতে, তবে ভাল কি শেষ হয়?