উত্তর:
এন্ট্রিগুলির field_config
এবং field_config_instance
সম্ভবত মান ছিল হবে 1
মধ্যে deleted
কলাম।
এর অর্থ এগুলি মুছে ফেলার জন্য চিহ্নিত করা হয়েছে তবে ক্রোন চালানো না হওয়া পর্যন্ত আসলে মুছে ফেলা হবে না (মোছা মাঠের ডেটা মুছে ফেলা হবে না field_cron()
)।
ড্রশ ব্যবহার:
$ drush eval "field_purge_batch(500)"
আপনাকে কয়েকবার দৌড়াতে হতে পারে, বা $ ব্যাচ_সাইজ বাড়িয়ে দিতে হবে তবে ক্রোন চালানোর পরেও ফিল্ড_ডিলিট এবং ফিল্ড_ডিলিটেড_রিভিশন টেবিল থাকতে পারে
প্রশ্ন
SELECT * FROM `field_config` WHERE `deleted` = 1
SELECT * FROM `field_config_instance` WHERE `deleted` = 1
যদি আপনি খালি উপরে আসেন তবে আপনি সেই বাকী টেবিলগুলি নিরাপদে মুছতে পারেন
মুছে ফেলা ডেটা মুছে ফেলার জন্য ক্রোন চালনার বিকল্প হিসাবে, আপনি ম্যানুয়ালি ফিল্ড_পুর্জ_ব্যাচ ($ ব্যাচ_সাইজ) চালাতে পারেন ।
ম্যানুয়ালি ফাংশনটি চালাতে আপনি যা করতে পারেন:
আপনার server ব্যাচ_ সাইজের ব্যবহারটি আপনার সার্ভারের পরিবেশ এবং প্রয়োজনের উপর নির্ভর করে পরিবর্তিত হবে। আমি মান 5 হিসাবে কম এবং 10000 এর চেয়ে বেশি মান ব্যবহার করেছি।
যারা ড্রুপাল 8 ব্যবহারকারীর জন্য,
আমি এটিও অভিজ্ঞতা পেয়েছি, কোডটি খনন করি। ক্ষেত্রগুলি আপনার করার পরেও ক্ষেত্রগুলি মোছা না হওয়ার জন্য এই সমস্ত কারণ খুঁজে পেয়েছি following
মাঠগুলি অবিচল থাকে না, কারণ এখানে কিছু যুক্তি রয়েছে, ফিল্ড_পুর্জ_বাচে
// We cannot purge anything if the entity type is unknown (e.g. the
// providing module was uninstalled).
// @todo Revisit after https://www.drupal.org/node/2080823.
if (!isset($info[$entity_type])) {
continue;
}
মডিউলগুলি যা নির্ভরশীল তা আনইনস্টল করা হয়। ক্ষেত্রগুলি অপসারণ না করার কারণ।
কীভাবে সমাধান করবেন? প্রথমে মডিউলটি পুনরায় ইনস্টল করার জন্য এবং সেই ক্ষেত্রগুলি শুদ্ধ করে ফিরে আনইনস্টল করার পরামর্শ দেওয়া হচ্ছে approach আপনাকে কোন মডিউলটি পুনরায় ইনস্টল করতে হবে তা জানতে:
$fields = entity_load_multiple_by_properties('field_config', array(
'deleted' => TRUE,
'include_deleted' => TRUE,
));
dpm($fields); // this is devel module of var_dump
// check the protected member called "dependencies"
আপনি যদি মডিউলটি পুনরায় ইনস্টল করার পক্ষে যেতে না চান তবে আপনি এখনই মুছে ফেলতে পারেন, আমি আচরণের বিষয়টি নিশ্চিত নই তবে এটি কাজটি করা উচিত।
প্রথমে ব্যাকআপ !!!
হ্যাঁ, অলস হয়ে উঠবেন না, যদি কিছু ভুল হয়ে যায় তবে এটি আপনার গাধাটিকে বাঁচাবে।
$fields = entity_load_multiple_by_properties('field_config', array(
'deleted' => TRUE,
'include_deleted' => TRUE,
));
foreach ($fields as $field) {
$field->delete();
}
// Retrieve all deleted field storages. Any that have no fields can be purged.
$deleted_storages = \Drupal::state()->get('field.storage.deleted') ? : array();
foreach ($deleted_storages as $field_storage) {
$field_storage = new FieldStorageConfig($field_storage);
$fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
if (empty($fields)) {
field_purge_field_storage($field_storage);
}
}
শেষবারের মতো ক্রোন করুন। আমি আশা করি এটি সমস্যার সমাধান করবে :)
কোনও সমাধান খুঁজে পাওয়া যাচ্ছে না বলে মনে হচ্ছে। সুতরাং আমি ম্যানুয়ালি two দুটি টেবিলগুলি থেকে সেগুলি মুছতে শেষ করেছি।
আপনি যদি কয়েকবার ড্রুপাল ক্রোন চালান তবে ড্রুপাল ফিল্ড টেবিল এবং এর সামগ্রী মুছে ফেলবে। ক্রোনটি সহজেই কয়েকবার চালানোর জন্য আপনি পরবর্তী পদক্ষেপগুলি অনুসরণ করতে পারেন তবে এই পদক্ষেপগুলি আপনার সিস্টেম, ওয়েব বা হোস্টিংকে অবরুদ্ধ করতে পারে তবে আপনি যদি আপনার সিস্টেমটি নিয়ন্ত্রণ করেন তবে আপনি তা করতে পারেন।
পরবর্তী বাশ কমান্ডটি লিখুন:
সত্য যদিও; কর্ল [কপি করা লিঙ্কটি এখানে রাখুন, বন্ধনীগুলি মুছে ফেলা]; সম্পন্ন;
এন্টার চাপুন. কমান্ডটি সীমাহীন সময়ে কার্যকর করা হবে।
যেমন আমি আগে মন্তব্য করেছি, সেরা সমাধান নয়, তবে এটি সহজ, এটি কাজ করে, আপনি কোনও ভুল করবেন না, কারণ আপনি কেবল ড্রুপাল ক্রোন চালাচ্ছেন, সুতরাং, আপনি কিছু ভুল পিএইচপি কোড দিয়ে কিছু ভাঙ্গতে পারেন। অন্যথায়, আপনি আপনার ওয়েবের সার্ভার, সিস্টেম, হোস্টিং বা অন্য যে কোনও কিছুকে পরিপূর্ণ করতে পারেন, কারণ এই পদক্ষেপগুলি ক্রোনটি অনেক বার চালায় এবং এটি ওয়েব সংস্থানগুলি গ্রাহক করে তোলে, তবে যদি আপনার সংস্থানগুলির নিয়ন্ত্রণ থাকে, তবে খুব বেশি কিছু করার দরকার নেই steps টেবিল বা সারি পরিষ্কার করতে বা আপনি জানেন যে এটি আপনার সিস্টেমের জন্য করা নিরাপদ, আপনি এটি করতে পারেন।
এবং আমি জানি, এটি সেরা সমাধান নয়। তবে এটা কাজ করে। হতে পারে এটি আপনার পরিস্থিতির জন্য সহজ এবং সর্বোত্তম সমাধান।