سؤال

ما هو الخطأ في أمر الجدول المتغير هذا:

ALTER TABLE `lp` 
ADD COLUMN `RuleId` INT(10) NOT NULL DEFAULT -111 AFTER `Weight` , , 
ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD INDEX `fk_1` (`RuleId` ASC) ;

إذا أسقطت الخط

  ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...

إنه عمل ،

الخطأ الذي أحصل عليه هو:

Error Code : 1005
Can't create table '..' (errno: 121)

كيف يمكنني إضافة مفتاح خارجي وفهرس في نفس الحقل ?

تحديث:

أحاول الانفصال عن استفسارين ، وأضف أولاً إضافة الفهرس وبعد ذلك إضافة مفتاح خارجي ، تمت إضافة الفهرس ولكن الاستعلام الثاني لا يعمل!

عندما أقوم بتغيير اسم المفتاح الخارجي (مثل: 'fk_2') وحاول تشغيله ، أحصل على خطأ: رمز الخطأ: 1452 لا يمكن إضافة أو تحديث صف الطفل: فشل قيود مفتاح خارجي

هل كانت مفيدة؟

المحلول

أولا قم بإنشاء الفهرس والثاني قيود المفتاح الخارجي. يحتاج MySQL إلى فهرس لإنشاء المفتاح الخارجي ، ولهذا السبب عليك إنشاء الفهرس أولاً. استخدم عبارات منفصلة كذلك.

نصائح أخرى

كان لدي نفس المشكلة بالضبط.

ما وجدته هو أنه لا يمكنك إضافة مفتاح خارجي إذا كان هناك بالفعل مفتاح خارجي آخر في قاعدة البيانات الخاصة بك له نفس الاسم بالضبط. حتى لو كان هذا المفتاح الخارجي الآخر على جدول مختلف.

خطأ 1005 (Hy000): لا يمكن إنشاء جدول ". تستخدم بالفعل في مكان آخر.

(مأخوذ من هنا)

لذا فقط أعد تسميته إلى شيء عشوائي للتحقق مما إذا كنت على صواب ..

حصلت على هذا الخطأ بعد الجمع بين مخطط DDLs من تطبيقات N Django باستخدام أمر "manage.py sqlall".

لقد وجدت أن DDL من MySQL يتطلب تجميع البيانات بواسطة طيب القلب في هذا التسلسل. على وجه التحديد ، كل الجدول المتغير ... أضف ... مفتاح خارجي ... يجب تحدث أخيرًا ، أو سوف يرفع MySQL هذا الخطأ.

  1. اصنع جدول ...
  2. إنشاء فهرس ...
  3. ALTER TABLE TABLE_NAME أضف اسم القيد المفتاح الخارجي ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top