ডাটাবেস থেকে মুছে ফেলা ফিল্ড


9

আমি ক্ষেত্রগুলি সেগুলি মুছে ফেলেছি। ক্ষেত্রগুলির জন্য টেবিলগুলি মোছার পরে চলে গেছে, তবে তারা এখনও field_configএবং এর মধ্যে রয়েছেfield_config_instance

এগুলি পরিষ্কার করার কি কোনও উপায় আছে?

ধন্যবাদ

উত্তর:


10

এন্ট্রিগুলির field_configএবং field_config_instanceসম্ভবত মান ছিল হবে 1মধ্যে deletedকলাম।

এর অর্থ এগুলি মুছে ফেলার জন্য চিহ্নিত করা হয়েছে তবে ক্রোন চালানো না হওয়া পর্যন্ত আসলে মুছে ফেলা হবে না (মোছা মাঠের ডেটা মুছে ফেলা হবে না field_cron())।


তুমি আসল পুরুষ. আমার phpmyadmin ইনস্টল করা নেই, তাই আমি ssh সংযোগের মাধ্যমে two দুটি টেবিলের জন্য অন্যান্য কলামগুলি চেক করিনি। ধন্যবাদ ক্লাইভ
লুস্কেয়ার

11

ড্রশ ব্যবহার:

$ drush eval "field_purge_batch(500)"

আপনাকে কয়েকবার দৌড়াতে হতে পারে, বা $ ব্যাচ_সাইজ বাড়িয়ে দিতে হবে তবে ক্রোন চালানোর পরেও ফিল্ড_ডিলিট এবং ফিল্ড_ডিলিটেড_রিভিশন টেবিল থাকতে পারে

প্রশ্ন

SELECT * FROM `field_config` WHERE `deleted` = 1
SELECT * FROM `field_config_instance` WHERE `deleted` = 1

যদি আপনি খালি উপরে আসেন তবে আপনি সেই বাকী টেবিলগুলি নিরাপদে মুছতে পারেন


এটি একটি দুর্দান্ত উত্তর, ধন্যবাদ @ ডেসিবেল.প্লেস!
joelpittet

6

মুছে ফেলা ডেটা মুছে ফেলার জন্য ক্রোন চালনার বিকল্প হিসাবে, আপনি ম্যানুয়ালি ফিল্ড_পুর্জ_ব্যাচ ($ ব্যাচ_সাইজ) চালাতে পারেন ।

ম্যানুয়ালি ফাংশনটি চালাতে আপনি যা করতে পারেন:

  • একটি পিএইচপি ফাইলে বুটস্ট্র্যাপ দ্রুপাল
  • একটি মেনু হুক পৃষ্ঠা কলব্যাক তৈরি করুন
  • আপনার যদি ডেভেল মডিউল ইনস্টল থাকে তবে ভিজিট / ডেভেল / পিএইচপি করুন

আপনার server ব্যাচ_ সাইজের ব্যবহারটি আপনার সার্ভারের পরিবেশ এবং প্রয়োজনের উপর নির্ভর করে পরিবর্তিত হবে। আমি মান 5 হিসাবে কম এবং 10000 এর চেয়ে বেশি মান ব্যবহার করেছি।


4

যারা ড্রুপাল 8 ব্যবহারকারীর জন্য,

আমি এটিও অভিজ্ঞতা পেয়েছি, কোডটি খনন করি। ক্ষেত্রগুলি আপনার করার পরেও ক্ষেত্রগুলি মোছা না হওয়ার জন্য এই সমস্ত কারণ খুঁজে পেয়েছি following

  • ক্রোন গাজিলিয়ন বার কার্যকর করা হচ্ছে
  • "ফিল্ড_পুর্জ_ব্যাচ (500)" মিলিয়ন বার ড্রশ ইভাল চালান

মাঠগুলি অবিচল থাকে না, কারণ এখানে কিছু যুক্তি রয়েছে, ফিল্ড_পুর্জ_বাচে

  // 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);
  }
}

শেষবারের মতো ক্রোন করুন। আমি আশা করি এটি সমস্যার সমাধান করবে :)


ড্রুপাল উত্তরগুলিতে আপনাকে স্বাগতম! দয়া করে একাধিক প্রশ্নের জন্য একই উত্তরটি অনুলিপি করুন না। যদি সেগুলি সদৃশ হয় তবে তাদের সদৃশ হিসাবে ফ্ল্যাগ করুন।
কিমলালুনো

-1

কোনও সমাধান খুঁজে পাওয়া যাচ্ছে না বলে মনে হচ্ছে। সুতরাং আমি ম্যানুয়ালি two দুটি টেবিলগুলি থেকে সেগুলি মুছতে শেষ করেছি।


এটি আমার সাথে ঠিক ঘটেছিল: উত্পাদনের ক্ষেত্র তৈরি করেছে, এটি পরীক্ষার সিস্টেমে অনুলিপি করেছে। উত্পাদনের ক্ষেত্রগুলিকে ফেরত দিয়েছিল, আবার পরীক্ষা সিস্টেমে অনুলিপি করে। ক্রোন সম্ভবত ইতিমধ্যে চলে গেছে, সুতরাং পরীক্ষার ডাটাবেসটি যথাযথভাবে বাদ / পুনরায় তৈরি করা হয়নি, তাই ডেটা এবং পুনর্বিবেচনার জন্য দুটি বাম টেবিল চারপাশে রাখা হয়েছিল ... অনুসন্ধানসমূহ: * পরীক্ষার ডাটাবেসে আমদানির সময় ব্যাকআপ নেওয়ার আগে সর্বদা ক্রোন চালান , সর্বদা ড্রপ এবং তৈরি করুন
ক্রিসটেনকে

drupal.org/node/1351506 এটি এখনও একটি পরিচিত সমস্যা।
কেভিন মোর্স

-1

আপনি যদি কয়েকবার ড্রুপাল ক্রোন চালান তবে ড্রুপাল ফিল্ড টেবিল এবং এর সামগ্রী মুছে ফেলবে। ক্রোনটি সহজেই কয়েকবার চালানোর জন্য আপনি পরবর্তী পদক্ষেপগুলি অনুসরণ করতে পারেন তবে এই পদক্ষেপগুলি আপনার সিস্টেম, ওয়েব বা হোস্টিংকে অবরুদ্ধ করতে পারে তবে আপনি যদি আপনার সিস্টেমটি নিয়ন্ত্রণ করেন তবে আপনি তা করতে পারেন।

  1. ড্রুপাল স্থিতি পৃষ্ঠায় যান (অ্যাডমিন / রিপোর্ট / স্থিতি)।
  2. পৃষ্ঠার নীচে, আপনি "ক্রোন নিজেই চালান" এর মতো কিছু এবং "বাইরে থেকে ক্রোন চালান" এর মতো লিঙ্ক এবং ক্রোন_কি প্যারামিটারের সাথে একটি লিঙ্ক দেখতে পাবেন। এই লিঙ্কটি অনুলিপি করুন।
  3. একটি টার্মিনালে যান (লিনাক্স বা ম্যাক টার্মিনাল)।
  4. পরবর্তী বাশ কমান্ডটি লিখুন:

    সত্য যদিও; কর্ল [কপি করা লিঙ্কটি এখানে রাখুন, বন্ধনীগুলি মুছে ফেলা]; সম্পন্ন;

  5. এন্টার চাপুন. কমান্ডটি সীমাহীন সময়ে কার্যকর করা হবে।

  6. আপনি phpmyadmin এর মতো আপনার ডাটাবেসটিতে যেতে পারেন এবং নামযুক্ত টেবিলগুলি "মুছুন" সন্ধান করতে পারেন। সারিগুলি কীভাবে মুছে ফেলা হচ্ছে এবং নীচে যেতে পারেন তা আপনি দেখতে পারেন। নামে "মুছুন" সহ সমস্ত সারণী খালি হয়ে গেলে, এটি বাদ দেওয়া হবে। আপনি যখন ডাটাবেসে কোনও মুছে ফেলা টেবিলগুলি দেখতে পাচ্ছেন না আপনি চূড়ান্ত 7 ধাপে যেতে পারেন।
  7. টার্মিনালে বাশ কমান্ড বন্ধ করে দিয়েছে। আপনি ctrl + c কী টিপতে পারেন। আপনি যদি না পারেন তবে টার্মিনালটি বন্ধ করুন।

যেমন আমি আগে মন্তব্য করেছি, সেরা সমাধান নয়, তবে এটি সহজ, এটি কাজ করে, আপনি কোনও ভুল করবেন না, কারণ আপনি কেবল ড্রুপাল ক্রোন চালাচ্ছেন, সুতরাং, আপনি কিছু ভুল পিএইচপি কোড দিয়ে কিছু ভাঙ্গতে পারেন। অন্যথায়, আপনি আপনার ওয়েবের সার্ভার, সিস্টেম, হোস্টিং বা অন্য যে কোনও কিছুকে পরিপূর্ণ করতে পারেন, কারণ এই পদক্ষেপগুলি ক্রোনটি অনেক বার চালায় এবং এটি ওয়েব সংস্থানগুলি গ্রাহক করে তোলে, তবে যদি আপনার সংস্থানগুলির নিয়ন্ত্রণ থাকে, তবে খুব বেশি কিছু করার দরকার নেই steps টেবিল বা সারি পরিষ্কার করতে বা আপনি জানেন যে এটি আপনার সিস্টেমের জন্য করা নিরাপদ, আপনি এটি করতে পারেন।

এবং আমি জানি, এটি সেরা সমাধান নয়। তবে এটা কাজ করে। হতে পারে এটি আপনার পরিস্থিতির জন্য সহজ এবং সর্বোত্তম সমাধান।

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