মাইএসকিউএল বিদেশী কীগুলির সাথে সারণী তৈরি করছে: এতে 150 টি রয়েছে


98

আমি মাইএসকিউএলে দুটি বিদেশী কী সহ একটি টেবিল তৈরি করার চেষ্টা করছি, যা প্রাথমিক 2 টি অন্যান্য টেবিলের মূল কীগুলি উল্লেখ করে, তবে আমি একটি ভুল: 150 ত্রুটি পাচ্ছি এবং এটি টেবিলটি তৈরি করবে না।

এখানে 3 টি সারণীর জন্য এসকিউএল রয়েছে:

CREATE TABLE role_groups (
  `role_group_id` int(11) NOT NULL `AUTO_INCREMENT`,
  `name` varchar(20),
  `description` varchar(200),
  PRIMARY KEY (`role_group_id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `roles` (
  `role_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50),
  `description` varchar(200),
  PRIMARY KEY (`role_id`)
) ENGINE=InnoDB;

create table role_map (
  `role_map_id` int not null `auto_increment`,
  `role_id` int not null,
  `role_group_id` int not null,
  primary key(`role_map_id`),
  foreign key(`role_id`) references roles(`role_id`),
  foreign key(`role_group_id`) references role_groups(`role_group_id`)
) engine=InnoDB;

কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


4
আপনি কি ত্রুটি আউটপুট পোস্ট করতে পারেন এবং কোন আদেশ (তিনটির) এর ফলে ত্রুটি ঘটছে তা জানাতে পারেন?
ডেভ

4
চারপাশে ব্যাক-টিকস দিয়ে কী আছে auto_increment? এটা বৈধ নয়। Auto_increment একটি কীওয়ার্ড, শনাক্তকারী নয়।
বিল কারভিন

উত্তর:


240

আমারও একই সমস্যা ছিল ALTER TABLE ADD FOREIGN KEY

এক ঘন্টা পরে, আমি দেখতে পেয়েছি যে এই শর্তগুলি ত্রুটি 150 না পেয়ে সন্তুষ্ট থাকতে হবে:

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

  2. দুটি সারণী উভয়ই বিদেশী কী বাধাগুলি সমর্থন করবে, যেমন ENGINE=InnoDB। অন্যান্য স্টোরেজ ইঞ্জিনগুলি নিঃশব্দে বিদেশী কী সংজ্ঞা উপেক্ষা করে, তাই তারা কোনও ত্রুটি বা সতর্কতা ফিরিয়ে দেয় না, তবে এফকে সীমাবদ্ধতা সংরক্ষণ করা হয় না।

  3. মূল টেবিলে রেফারেন্সিত কলামগুলি অবশ্যই একটি কী-র বাম-কলাম হতে হবে। শ্রেষ্ঠ মূল কী হলে PRIMARY KEYবা UNIQUE KEY

  4. এফকে সংজ্ঞা অবশ্যই পিকে সংজ্ঞা হিসাবে একই ক্রমে পিকে কলাম (গুলি) উল্লেখ করতে হবে। উদাহরণস্বরূপ, যদি এফকে হয় REFERENCES Parent(a,b,c)তবে পিতামাতার পিকে অবশ্যই কলামগুলিতে ক্রমানুসারে সংজ্ঞায়িত করা উচিত নয় (a,c,b)

  5. মূল টেবিলে থাকা পিকে কলাম (গুলি) অবশ্যই শিশু টেবিলে এফকে কলাম (গুলি) এর মতো একই ডাটা টাইপের হতে হবে। উদাহরণস্বরূপ, যদি পিতামাতার সারণীতে কোনও পিকে কলাম থাকে তবে শিশু সারণী ক্ষেত্রে সংশ্লিষ্ট কলামটির জন্য UNSIGNEDনির্ধারণ করতে ভুলবেন না UNSIGNED

    ব্যতিক্রম: স্ট্রিংগুলির দৈর্ঘ্য আলাদা হতে পারে। উদাহরণস্বরূপ, VARCHAR(10)রেফারেন্স VARCHAR(20)বা তদ্বিপরীত করতে পারেন ।

  6. যে কোনও স্ট্রিং-টাইপ এফকে কলাম (গুলি) এর সাথে সম্পর্কিত পিকে কলাম (গুলি) এর মতো একই অক্ষর সেট এবং কোলেশন থাকতে হবে।

  7. চাইল্ড টেবিলে ইতিমধ্যে যদি ডেটা থাকে তবে এফকে কলাম (গুলি) এর প্রতিটি মান অবশ্যই পিতামাতার টেবিলে পিকে কলাম (গুলি) এর সাথে একটি মানের সাথে মেলে। এটি একটি প্রশ্নের সাথে পরীক্ষা করুন:

    SELECT COUNT(*) FROM Child LEFT OUTER JOIN Parent ON Child.FK = Parent.PK 
    WHERE Parent.PK IS NULL;
    

    এটি অবশ্যই শূন্য (0) সাথে মিলবে না values স্পষ্টতই, এই ক্যোয়ারী একটি জেনেরিক উদাহরণ; আপনাকে অবশ্যই আপনার টেবিলের নাম এবং কলামের নাম লিখতে হবে।

  8. অভিভাবক সারণি বা চাইল্ড টেবিল উভয়ই কোনও টেবিল হতে পারে না TEMPORARY

  9. অভিভাবক সারণি বা চাইল্ড টেবিল উভয়ই কোনও টেবিল হতে পারে না PARTITIONED

  10. যদি আপনি ON DELETE SET NULLবিকল্পটি দিয়ে কোনও এফকে ঘোষণা করেন , তবে এফকে কলাম (গুলি) অবশ্যই নলযোগ্য।

  11. আপনি যদি কোনও বিদেশী কীর জন্য একটি সীমাবদ্ধ নাম ঘোষণা করেন তবে সীমাবদ্ধতার নামটি পুরো স্কিমায় অবশ্যই অনন্য হতে হবে, কেবল সারণীতে নয় যেখানে সীমাবদ্ধতার সংজ্ঞা দেওয়া হয়েছে। দুটি টেবিলের একই নামের নিজস্ব বাধা নাও থাকতে পারে।

  12. যদি অন্য কোনও টেবিলগুলিতে অন্য ক্ষেত্রগুলিতে একই ক্ষেত্রের দিকে ইঙ্গিত করে আপনি নতুন এফকে তৈরি করার চেষ্টা করছেন এবং সেগুলি ত্রুটিযুক্ত (অর্থাত্‍ পৃথক কোলেশন) হয় তবে প্রথমে সেগুলি সুসংগত করে তুলতে হবে। এটি অতীতের পরিবর্তনের ফলাফল হতে পারে যেখানে SET FOREIGN_KEY_CHECKS = 0;ভুল দ্বারা সংজ্ঞাযুক্ত অসামঞ্জস্যপূর্ণ সম্পর্কের সাথে ব্যবহার করা হয়েছিল। কীভাবে এই সমস্যাটিকে এফকে সনাক্ত করতে হয় তার নির্দেশাবলীর জন্য নীচে @ অ্যান্ড্রুডটনের উত্তর দেখুন।

আশাকরি এটা সাহায্য করবে.


4
আরও একটি বিষয় যোগ করার মতো: যদি পিতামাতার টেবিলের পিকে একাধিক ক্ষেত্র হয় তবে এফকে ক্ষেত্রগুলির ক্রম অবশ্যই পিকে
কিপ

26
এর মধ্যে int(11) unsigned NOT NULLবনামের মতো জিনিস রয়েছে int(11) NOT NULL
গ্লেন সলসবেরি

4
টেবিলের টেবিলের নাম ALGET ENGINE = InnoDB;
টোলমেরা

12
যদি টেবিলটি ENGINE = মাইআইএসএএম সংজ্ঞায়িত করা হয় তবে এটি 150 ত্রুটি তৈরি করে না কারণ এটি বিদেশী কী ঘোষণাকে উপেক্ষা করে । এটি আপনার অটোমোবাইল ইঞ্জিনের সাথে ঝামেলা এড়ানোর সর্বোত্তম উপায় বলে নৌকো চালানো like :-)
বিল কারউইন

4
এছাড়াও, যদি আপনার চুক্তির ON DELETEনিয়মটি SET NULLনিশ্চিত হয় তবে বিদেশী কীটি আসলে নাল হতে পারে তা নিশ্চিত করুন! আমি এই উত্তরটি বারবার পড়তে 30 মিনিট সময় ব্যয় করেছি, এটি নিশ্চিত করে যে আমার টেবিলগুলি শর্ত পূরণ করেছে তবে তবুও 150 টি ত্রুটি পেয়েছে Then তখন আমি লক্ষ্য করেছি যে আমার এফকে একটি নল ক্ষেত্র নয় যার অর্থ নিয়ম প্রয়োগ করা অসম্ভব।
মার্টিন জয়েনার

62

মাইএসকিউএল এর জেনেরিক "ভুল 150" বার্তা "এর অর্থ হ'ল কোনও বিদেশী কী বাধা সঠিকভাবে গঠিত হয়নি ।" আপনি সম্ভবত এই পৃষ্ঠাটি পড়ছেন কিনা তা ইতিমধ্যে আপনি জানেন, জেনেরিক "errno: 150" ত্রুটি বার্তাটি সত্যই অসহনীয়। যাহোক:

আপনি চালিয়ে এবং তারপরে আউটপুটটি অনুসন্ধান করে প্রকৃত ত্রুটি বার্তাটি পেতে পারেন ।SHOW ENGINE INNODB STATUS;LATEST FOREIGN KEY ERROR

উদাহরণস্বরূপ, একটি বিদেশী কী বাধা তৈরি করার এই প্রচেষ্টা:

CREATE TABLE t1
(id INTEGER);

CREATE TABLE t2
(t1_id INTEGER,
 CONSTRAINT FOREIGN KEY (t1_id) REFERENCES t1 (id));

ত্রুটি সঙ্গে ব্যর্থ Can't create table 'test.t2' (errno: 150)। এটি বিদেশী কী সমস্যা ব্যতীত কাউকে দরকারী কিছু বলে না। তবে দৌড়াও SHOW ENGINE INNODB STATUS;এবং এটি বলবে:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
130811 23:36:38 Error in foreign key constraint of table test/t2:
FOREIGN KEY (t1_id) REFERENCES t1 (id)):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.

এটি বলে যে সমস্যাটি এটি কোনও সূচকটি খুঁজে পাচ্ছে না। SHOW INDEX FROM t1দেখায় যে টেবিলের জন্য কোনও সূচক মোটেই নেই t1। এটি দ্বারা একটি প্রাথমিক কীটি সংজ্ঞায়িত করে বলুন t1, এবং বিদেশী কী সীমাবদ্ধতা সফলভাবে তৈরি হবে।


4
SHOW ENGINE INNODB STATUSতাত্ক্ষণিকভাবে আমাকে এমন সমস্যা সনাক্ত করতে সহায়তা করল যা আমি প্রায় এক ঘন্টা ধরে নির্ণয়ের চেষ্টা করছিলাম। ধন্যবাদ
জাতিরম

আমার ক্ষেত্রে এটি ইঙ্গিত করেছে যে এফকে যে একই ক্ষেত্রটি আমি নির্দেশ করতে চাইছিলাম এটি সম্পূর্ণ আলাদা টেবিলটি অসঙ্গতিপূর্ণ এবং তাই নতুনটিকে সংরক্ষণ করবে না ... ধরে নেওয়া এই SET FOREIGN_KEY_CHECKS = 0;কোনও আমদানি / পরিবর্তনের সময় ব্যবহার করা যা দূষিত ছিল এক সময় অথবা অন্য সময়ে. বড় সাহায্য, ধন্যবাদ।
7'19

25

আপনি যে দুটি ক্ষেত্রের সীমাবদ্ধতার সাথে সংযোগ স্থাপনের চেষ্টা করছেন তার বৈশিষ্ট্যগুলি একই রকম রয়েছে তা নিশ্চিত করুন।

প্রায়শই, একটি আইডি কলামে 'স্বাক্ষরবিহীন' সম্পত্তি আপনাকে ধরা দেয়।

ALTER TABLE `dbname`.`tablename` CHANGE `fieldname` `fieldname` int(10) UNSIGNED NULL;

আমার অভিজ্ঞতায়, আপনার মূল সূচী কলামের বিরুদ্ধে ঠিক কী পতাকাগুলি সেট করা আছে তা পরীক্ষা করার জন্য আপনার মূল টেবিলটিতে মাইএসকিউএল এর শো ক্রিয়েট টেবিলটি ব্যবহার করা উপযুক্ত, তারপরে সেগুলি আপনার বিদেশী কী কলামে অনুলিপি করুন। সেখানে "স্বাক্ষরবিহীন" মতো জিনিস থাকতে পারে যা সুস্পষ্ট নয়।
অ্যাম্বুলার

10

আপনি যখন এই স্ক্রিপ্টটি চালাবেন তখন আপনার ডাটাবেসের বর্তমান অবস্থা কী? এটা কি পুরো ফাঁকা? আপনার এসকিউএল স্ক্র্যাচ থেকে একটি ডেটাবেস তৈরি করার সময় আমার পক্ষে ভাল কাজ করে তবে সাধারণত 150 টি বিদেশী চাবির অংশ যা টেবিলগুলি ড্রপ এবং পুনরায় তৈরি করার সাথে করতে হয়। আমি অনুভব করছি যে আপনি ১০০% নতুন এবং নতুন ডাটাবেসের সাথে কাজ করছেন না।

যদি আপনার এসকিউএল ফাইলটি "উত্স" -তে করার সময় আপনি ত্রুটিযুক্ত হয়ে থাকেন তবে আরও ত্রুটি সম্পর্কিত তথ্য দেখার জন্য আপনার "উত্স" কমান্ডের সাথে সাথেই মাইএসকিউএল প্রম্পট থেকে "দেখান ইঞ্জিন ইনোডব পরিস্থিতি" কমান্ডটি চালানো উচিত।

আপনি ম্যানুয়াল এন্ট্রিটিও পরীক্ষা করে দেখতে চাইতে পারেন:

যদি আপনি একটি সারণী বাদ পড়েছিলেন তা পুনরায় তৈরি করেন তবে এর অবশ্যই একটি সংজ্ঞা থাকতে হবে যা বিদেশী কী সীমাবদ্ধতার সাথে সামঞ্জস্য করে। এটিতে অবশ্যই সঠিক কলামের নাম এবং প্রকারগুলি থাকতে হবে এবং এটি অবশ্যই রেফারেন্স কীগুলিতে সূচকগুলি থাকতে হবে, যেমনটি আগেই বলা হয়েছে। এগুলি যদি সন্তুষ্ট না হয় তবে মাইএসকিউএল ত্রুটি নম্বর 1005 প্রদান করে এবং ত্রুটি বার্তায় 150 ত্রুটি উল্লেখ করে। যদি মাইএসকিউএল 100 টি ত্রুটি সংখ্যার ক্রিয়েট টেবিল বিবৃতি থেকে রিপোর্ট করে এবং ত্রুটি বার্তাটি ত্রুটি 150 কে বোঝায়, সারণী তৈরি ব্যর্থ হয়েছে কারণ কোনও বিদেশী কী বাধা সঠিকভাবে গঠিত হয়নি।

- মাইএসকিউএল 5.1 রেফারেন্স ম্যানুয়াল


5

এই সমস্যাটি একই সমস্যার সাথে দেখছেন এমন লোকদের জন্য:

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

মাইএসকিউএল বিদেশী কী ত্রুটি এবং এর্নো 150


4

গুগলের মাধ্যমে এই SO এন্ট্রিটি খুঁজে পাওয়া অন্যদের জন্য: নিশ্চিত হয়ে নিন যে আপনি "নট নুল নয়" হিসাবে সংজ্ঞায়িত কোনও বিদেশী কী (হতে) কলামে একটি সেট নল কর্ম করার চেষ্টা করছেন না। আমি চেক ইঞ্জিন ইনোডব স্ট্যাটাস করার কথা মনে না হওয়া পর্যন্ত এটি হতাশার কারণ হয়ে দাঁড়িয়েছিল।


3

অবশ্যই এটি নয় তবে আমি এই ভুলটি বেশ সাধারণ এবং অবিস্মরণীয় বলে মনে করেছি। একটি লক্ষ্য FOREIGN KEYহতে পারে না PRIMARY KEY। আমার উত্তর কার্যকর হয় যা উত্তর:

একটি বিদেশী কী সর্বদা অন্য টেবিলের একটি প্রাথমিক কী সত্যিকারের ক্ষেত্রের দিকে নির্দেশ করতে হবে।

CREATE TABLE users(
   id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(40));

CREATE TABLE userroles(
   id INT AUTO_INCREMENT PRIMARY KEY,
   user_id INT NOT NULL,
   FOREIGN KEY(user_id) REFERENCES users(id));

3

@ অ্যান্ড্রুডটনের নির্দেশ অনুসারে সর্বোত্তম উপায়টি SHOW ENGINE INNODB STATUS;হল কেবল একটি ত্রুটি কোডের পরিবর্তে বিশদ ত্রুটি ( ) দেখা।

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


3

দয়া করে এটি প্রথমে নিশ্চিত করুন

  1. আপনি InnoDB টেবিল ব্যবহার করছেন।
  2. বিদেশী কী এর ক্ষেত্রের উত্স ক্ষেত্র হিসাবে একই ধরণের এবং দৈর্ঘ্য (!) রয়েছে।

আমারও একই সমস্যা ছিল এবং আমি তা স্থির করেছি। আমি একটি ক্ষেত্রের জন্য INT স্বাক্ষর করেছিলাম এবং অন্য ক্ষেত্রের জন্য শুধু পূর্ণসংখ্যার।


2

সহায়ক টিপ, SHOW WARNINGS;আপনার CREATEজিজ্ঞাসা চেষ্টা করার পরে ব্যবহার করুন এবং আপনি ত্রুটি পাশাপাশি আরও বিস্তারিত সতর্কতা পাবেন:

    ---------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                                                                                                                                 |
+---------+------+--------------------------------------------------------------------------                          --------------------------------------------------------------------------------------------                          ---------------+
| Warning |  150 | Create table 'fakeDatabase/exampleTable' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns.
|
| Error   | 1005 | Can't create table 'exampleTable' (errno:150)                                                                                                                                                                           |
+---------+------+--------------------------------------------------------------------------                          --------------------------------------------------------------------------------------------                          ---------------+

এক্ষেত্রে আমার টেবিলটি নতুন করে তৈরি করার সময়!


1

আপনি যখন বিদ্যমান ডাটাবেসে ফাইল উত্সের চেষ্টা করেন তখন এটি সাধারণত ঘটে থাকে। প্রথমে সমস্ত টেবিল ফেলে দিন (বা নিজে ডিবি)। এবং তারপর উত্স ফাইলটি SET foreign_key_checks = 0;শুরুতে এবং SET foreign_key_checks = 1;শেষে রয়েছে।


1

আমি এই ব্যর্থ হওয়ার আরও একটি কারণ পেয়েছি ... সংবেদনশীল টেবিলের নাম।

এই টেবিল সংজ্ঞা জন্য

CREATE TABLE user (
  userId int PRIMARY KEY AUTO_INCREMENT,
  username varchar(30) NOT NULL
) ENGINE=InnoDB;

এই টেবিল সংজ্ঞা কাজ করে

CREATE TABLE product (
  id int PRIMARY KEY AUTO_INCREMENT,
  userId int,
  FOREIGN KEY fkProductUser1(userId) REFERENCES **u**ser(userId)
) ENGINE=InnoDB;

যদিও এই এক ব্যর্থ

CREATE TABLE product (
  id int PRIMARY KEY AUTO_INCREMENT,
  userId int,
  FOREIGN KEY fkProductUser1(userId) REFERENCES User(userId)
) ENGINE=InnoDB;

এটি উইন্ডোতে কাজ করেছে এবং ইউনিক্সে ব্যর্থ হয়েছিল তা জানতে আমার কয়েক ঘন্টা সময় লেগেছে। আশা করি এটি অন্য কাউকে সাহায্য করবে।


1

ম্যাক ওএসের জন্য মাইএসকিউএল ওয়ার্কবেঞ্চ 6.3।

সমস্যা: একটি ডিবি ডায়াগ্রামে ফরোয়ার্ড ইঞ্জিনিয়ারিং করার চেষ্টা করার সময় টেবিল এক্সে থাকা 150 টি, 21 জনের মধ্যে 20 সফল, 1 ব্যর্থ হয়েছে। যদি টেবিল এক্সের এফকেগুলি মুছে ফেলা হয়, ত্রুটিটি অন্য কোনও টেবিলে সরানো হয়েছে যা আগে ব্যর্থ হয় নি।

সমস্ত টেবিল ইঞ্জিনটি মাইআইএসএএম-তে পরিবর্তিত হয়েছে এবং এটি ঠিক কাজ করেছে।

এখানে চিত্র বর্ণনা লিখুন


0

আপনি ভুল ডেটাবেসে ভুলবশত অপারেটিং করছেন না তা পরীক্ষা করে দেখার মতো। বিদেশী টেবিলের অস্তিত্ব না থাকলে এই ত্রুটি ঘটবে। মাইএসকিউএল কেন এত গুপ্ত হতে হবে?


0

বিদেশী কীগুলি পিতামাতার মধ্যে অনন্য হিসাবে তালিকাভুক্ত নয় তা নিশ্চিত করুন। আমারও একই সমস্যা ছিল এবং আমি এটি অনন্য হিসাবে চিহ্নিত না করে সমাধান করেছি।


0

আমার ক্ষেত্রে এটি যে বিদেশী কী ক্ষেত্রের ক্ষেত্রটির একটি দীর্ঘ নাম ছিল, এই কারণে এটি ছিল। foreign key (some_other_table_with_long_name_id)। সংক্ষিপ্ততর চেষ্টা করুন। ত্রুটি বার্তা এক্ষেত্রে কিছুটা বিভ্রান্তিকর।

এছাড়াও, @ জোন যেমন আগে উল্লিখিত হয়েছে - ক্ষেত্রের সংজ্ঞা একই হতে হবে (সাব টাইপের জন্য নজর রাখুন unsigned)।


0

(পার্শ্ব নোট একটি মন্তব্যের জন্য খুব বড়)

AUTO_INCREMENTম্যাপিং টেবিলে কোনও আইডির প্রয়োজন নেই ; এটি পরিত্রাণ পেতে।

পরিবর্তন PRIMARY KEYকরার জন্য (role_id, role_group_id)(হয় অনুক্রমে)। এটি অ্যাক্সেসগুলি দ্রুত তৈরি করবে।

যেহেতু আপনি সম্ভবত উভয় দিকনির্দেশ মানচিত্র করতে চান INDEXতাই বিপরীত ক্রমে two দুটি কলামের সাথে একটি যুক্ত করুন । (এটি তৈরি করার দরকার নেই UNIQUE))

আরও টিপস: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#spinning_up_wp_postmeta



0

টেবিল তৈরি করার আগে নীচের লাইনটি সম্পাদন করুন: SET FOREIGN_KEY_CHECKS = 0;

FOREIGN_KEY_CHECKS বিকল্পটি InnoDB টেবিলগুলির জন্য বিদেশী কী সীমাবদ্ধতাগুলি পরীক্ষা করে কিনা তা নির্দিষ্ট করে।

- বিদেশী কী সীমাবদ্ধতাগুলি পরীক্ষা করতে নির্দিষ্ট করুন (এটি ডিফল্ট)

SET FOREIGN_KEY_CHECKS = 1;

 

- বিদেশী কী বাধাগুলি পরীক্ষা করবেন না

বিদেশে সেট_ विदेशে_কে_ইসিইসিইসি = 0;

কখন ব্যবহার করবেন: অস্থায়ীভাবে রেফারেনশিয়াল সীমাবদ্ধতাগুলি অক্ষম করা (FOREIGN_KEY_CHECKS তে 0 সেট করুন) দরকারী যখন আপনি কোনও পিতা-সন্তানের ক্রমে টেবিলগুলি পুনরায় তৈরি করতে এবং ডেটা লোড করতে হবে


-1

আমি একই সমস্যার মুখোমুখি হয়েছি, তবে আমি যাচাই করে দেখি যে আমার পিতামাতার সারণী ছিল না। তাই আমি কেবলমাত্র শিশু স্থানান্তরের সামনে পিতামাতার স্থানান্তর সম্পাদনা করি edit এটা করতে.


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