বিদেশী কী ক্ষেত্র এবং রেফারেন্সের ধরণ এবং সংজ্ঞা অবশ্যই সমান হতে হবে। এর অর্থ আপনার বিদেশী কী আপনার ক্ষেত্রের ধরণ পরিবর্তন করতে দেয়।
এর একটি সমাধান হ'ল:
LOCK TABLES
favorite_food WRITE,
person WRITE;
ALTER TABLE favorite_food
DROP FOREIGN KEY fk_fav_food_person_id,
MODIFY person_id SMALLINT UNSIGNED;
এখন আপনি ব্যক্তি_আইডি পরিবর্তন করতে পারেন
ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
বিদেশী কী পুনরায় তৈরি করুন
ALTER TABLE favorite_food
ADD CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id)
REFERENCES person (person_id);
UNLOCK TABLES;
সম্পাদনা:
উপরের তালিকাগুলি যুক্ত, মন্তব্যে ধন্যবাদ
এটি করার সময় আপনাকে ডাটাবেসে লিখিত অনুমতি দিতে হবে, অন্যথায় আপনি ডেটা অখণ্ডতার সমস্যার ঝুঁকি নিতে পারেন।
আমি উপরে একটি লেখার লক যুক্ত করেছি
আপনার নিজের ( INSERT, UPDATE, DELETE) ব্যতীত অন্য কোনও অধিবেশনে সমস্ত লেখার প্রশ্নাবলী সময়সীমা শেষ হওয়ার অপেক্ষা করবে বা UNLOCK TABLES; মৃত্যুদন্ড কার্যকর করা হয়
http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html
সম্পাদনা 2: ওপি "বিদেশী কী ক্ষেত্রের ধরণ এবং রেফারেন্সের ধরণ এবং সংজ্ঞা অবশ্যই সমান হতে হবে This এর অর্থ আপনার বিদেশী কী আপনার ক্ষেত্রের ধরণ পরিবর্তন করার অনুমতি দেয় না" "
থেকে ফরেইন কী সীমাবদ্ধতাসমূহ: মাইএসকিউএল 5.5 রেফারেন্স ম্যানুয়াল
বিদেশী কী এবং রেফারেন্সকৃত কীতে সংশ্লিষ্ট কলামগুলির সাথে অবশ্যই InnoDB এর অভ্যন্তরীণ ডাটা টাইপ থাকতে হবে যাতে এগুলি কোনও ধরণের রূপান্তর ছাড়াই তুলনা করা যায়। পূর্ণসংখ্যার ধরণের আকার এবং চিহ্ন অবশ্যই একই হতে হবে। স্ট্রিং ধরণের দৈর্ঘ্য সমান হওয়ার দরকার নেই। ননবাইনারি (অক্ষর) স্ট্রিং কলামগুলির জন্য, অক্ষর সেট এবং কোলেশন একই হতে হবে।