বিদেশী কী সীমাবদ্ধতার বাইরে গিয়ে মাইএসকিএল চাপুন


134

আমি একটি ব্যতীত একটি ডাটাবেস থেকে সমস্ত সারণী মুছে ফেলার চেষ্টা করছি এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

পিতামাতার সারিটি মুছতে বা আপডেট করতে পারে না: একটি বিদেশী কী সীমাবদ্ধতা ব্যর্থ হয়

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

গুগল আমাকে এমন কোনও সাইটে লক্ষ্য করেছিল যা নিম্নলিখিত পদ্ধতিটির পরামর্শ দিয়েছে:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;

সংক্ষিপ্ত উত্তর হ'ল আমি আরও ত্রুটিগুলি মুছতে সক্ষম হবার পরে আমি একই ত্রুটিটি পেয়ে শেষ হওয়ার পরে এটি আসলে কৌশলটি করেনি। আমি নির্দিষ্ট স্টেবিলের সাথে সমস্ত বিদেশী কী যুক্ত করার জন্য স্ট্যাক ওভারফ্লো উপায়ে দেখেছি তবে আমি এটি সমস্ত স্ক্রিপ্ট না করা পর্যন্ত খুব বেশি সময় ব্যয়কারী (যা অন্য কোনও বিকল্প না হলে ক্ষেত্রে করণীয়)

ডাটাবেস 4.1 তাই আমি ব্যবহার করতে পারি না DROP DATABASE

ধারনা?


1
আপনি উত্তরটি কেন বাছাই করা হিসাবে বেছে নিয়েছিলেন যা আপনার প্রশ্নের সমাধানও সরবরাহ করে না?
সঞ্জয়

উত্তর:


-40

যেহেতু আপনি কোনও ডেটা রাখতে আগ্রহী না তাই পুরো ডাটাবেসটি ফেলে দিন এবং একটি নতুন ডেটা তৈরি করুন।


3
ওহ আমার, আমি এখন খুব বোকা বোধ করছি, আমি পরে ডেটাবেস যুক্ত করার পরিবর্তে ডাটাবেসের আসল নামটি দিয়ে DATABASE শব্দটি প্রতিস্থাপন করছিলাম, উভয়কে +1
jahnnyArt

13
এটি উত্তর নয়
ফ্রিল্যান্সার

8
এই উত্তরটি টিক পেয়েছে এবং উজ্জ্বল হয়েছে তা দেখে হাসিখুশি
tom10271

4
@ রবার্টপাউন্ডার হ'ল আমার উদ্দেশ্য ছিল এবং আমি এই সাইটে যোগদানের পর থেকেই। আমি আপনার দৃষ্টিভঙ্গি প্রশংসা করি।
ওটিভিও ডাসিও

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

404

এটি অনুসন্ধান থেকে এখানে শেষ হওয়া কারও পক্ষে উপকারী হতে পারে। নিশ্চিত হয়ে নিন যে আপনি কোনও টেবিল বাদ দেওয়ার চেষ্টা করছেন এবং দৃশ্যটি নয়

SET বিদেশী_কি_চেকস = 0;
- টেবিলগুলি ফেলে দিন
ড্রপ টেবিল ...
- ড্রপ দর্শন
ড্রপ ভিউ ...
এসইটি বিদেশী_কি_চেকস = 1;

SET foreign_key_checks = 0হ'ল বিদেশী কী চেকগুলি বন্ধ করতে হবে এবং তারপরে SET foreign_key_checks = 1বিদেশী কী চেকগুলি আবার চালু করা হবে। চেকগুলি সারণিগুলি বন্ধ থাকা অবস্থায় ফেলে দেওয়া যেতে পারে, টেবিলের কাঠামোর অখণ্ডতা বজায় রাখতে চেকগুলি আবার চালু করা হবে।


43
প্যাট আমার বন্ধু!
সানডাউনে

5
এটি একটি ভাল সঠিক উত্তর। সমস্ত সারণী মুছে ফেলা হোক বা না কয়েকটি সমস্যা সমাধান করুন। ভয়ঙ্কর!
লুক স্টিভেনসন

@ প্যাট আপনাকে অনেক ধন্যবাদ, এটি কাজ করেছে। যদিও এটি মাইএসকিএল ক্যোয়ারী ব্রাউজারে কাজ করতে পারেনি। আপনি আমার দিন বাঁচিয়েছেন।
MaNn

পুরোপুরি কাজ করেছিলাম, আমি এটি ব্যবহার করেছি কারণ আমি পুরো ডাটাবেসটি ফেলে দিতে পারি না
পাবলো পাজোস

1
আমি সম্মত হই যে এটি সাধারনত সঠিক সমাধান তবে @ জোজনি আর্ট, যিনি প্রশ্ন করেছিলেন, বিশেষত এটিকে একটি কার্যকর বিকল্প হিসাবে বাদ দিয়েছেন কারণ এটি তার পক্ষে কার্যকর হয়নি। সুতরাং দেখে মনে হচ্ছে এটি মূল প্রশ্নের সঠিক উত্তর নয়, তাই না?
ডেভিড

18

আপনি যদি phpmyadmin ব্যবহার করছেন তবে এই বৈশিষ্ট্যটি ইতিমধ্যে রয়েছে।

  • আপনি যে টেবিলগুলি ফেলে দিতে চান তা নির্বাচন করুন
  • টেবিল তালিকার নীচে ড্রপডাউন থেকে ড্রপ নির্বাচন করুন
  • "বিদেশী কী চেক" বলে নীচে চেকবক্সযুক্ত একটি নতুন পৃষ্ঠা খোলা হবে, এটিটি আনচেক করুন।
  • "হ্যাঁ" স্বীকার করে মোছার বিষয়টি নিশ্চিত করুন।

3
তুমি আমার দিন বাঁচিয়েছ! ধন্যবাদ! মোহন মত কাজ!
কামি

4

আপনি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করতে পারেন, এটি আমার পক্ষে সীমাবদ্ধতার সাথে টেবিল ফেলে দেওয়ার জন্য কাজ করেছে, সমাধানটি ইতিমধ্যে উপরের মন্তব্যে ব্যাখ্যা করা হয়েছে, আমি কেবল তার জন্য স্ক্রিন শট যুক্ত করেছি -এখানে চিত্র বর্ণনা লিখুন


এটি সর্বোচ্চ ভোট দেওয়া উত্তরের একটি সদৃশ যা চার বছর আগে পোস্ট করা হয়েছিল।
chb

3

ড্রপ ডাটাবেস মাইএসকিউএল এর সমস্ত সংস্করণে বিদ্যমান। আপনি যদি টেবিলের কাঠামোটি রাখতে চান তবে এখানে একটি ধারণা idea

mysqldump - কোন তথ্য - অ্যাডড ড্রপ-ডাটাবেস - অ্যাড-ড্রপ-টেবিল

এটি মাইএসকিএল কমান্ড নয়, একটি প্রোগ্রাম

তারপরে, মাইএসকিএল এবং এ লগইন করুন

উত্স dump.sql;


1

টার্মিনাল থেকে সমস্ত টেবিল একবারে ফেলে দেওয়ার সহজ সমাধান।

এটি আপনার মাইএসকিএল শেলের ভিতরে কয়েক ধাপ জড়িত (যদিও এক ধাপের সমাধান নয়), এটি আমার কাজ করে এবং আমার দিনকে বাঁচায়।

সার্ভার সংস্করণে কাজ করেছেন: 5.6.38 মাইএসকিউএল কমিউনিটি সার্ভার (জিপিএল)

পদক্ষেপগুলি আমি অনুসরণ করেছি:

 1. generate drop query using concat and group_concat.
 2. use database
 3. turn off / disable foreign key constraint check (SET FOREIGN_KEY_CHECKS = 0;), 
 4. copy the query generated from step 1
 5. re enable foreign key constraint check (SET FOREIGN_KEY_CHECKS = 1;)
 6. run show table

মাইএসকিউএল শেল

$ mysql -u root -p
Enter password: ****** (your mysql root password)
mysql> SYSTEM CLEAR;
mysql> SELECT CONCAT('DROP TABLE IF EXISTS `', GROUP_CONCAT(table_name SEPARATOR '`, `'), '`;') AS dropquery FROM information_schema.tables WHERE table_schema = 'emall_duplicate';
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dropquery                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DROP TABLE IF EXISTS `admin`, `app`, `app_meta_settings`, `commission`, `commission_history`, `coupon`, `email_templates`, `infopages`, `invoice`, `m_pc_xref`, `member`, `merchant`, `message_templates`, `mnotification`, `mshipping_address`, `notification`, `order`, `orderdetail`, `pattributes`, `pbrand`, `pcategory`, `permissions`, `pfeatures`, `pimage`, `preport`, `product`, `product_review`, `pspecification`, `ptechnical_specification`, `pwishlist`, `role_perms`, `roles`, `settings`, `test`, `testanother`, `user_perms`, `user_roles`, `users`, `wishlist`; |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> USE emall_duplicate;
Database changed
mysql> SET FOREIGN_KEY_CHECKS = 0;                                                                                                                                                   Query OK, 0 rows affected (0.00 sec)

// copy and paste generated query from step 1
mysql> DROP TABLE IF EXISTS `admin`, `app`, `app_meta_settings`, `commission`, `commission_history`, `coupon`, `email_templates`, `infopages`, `invoice`, `m_pc_xref`, `member`, `merchant`, `message_templates`, `mnotification`, `mshipping_address`, `notification`, `order`, `orderdetail`, `pattributes`, `pbrand`, `pcategory`, `permissions`, `pfeatures`, `pimage`, `preport`, `product`, `product_review`, `pspecification`, `ptechnical_specification`, `pwishlist`, `role_perms`, `roles`, `settings`, `test`, `testanother`, `user_perms`, `user_roles`, `users`, `wishlist`;
Query OK, 0 rows affected (0.18 sec)

mysql> SET FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW tables;
Empty set (0.01 sec)

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