سؤال

لدي مشكلة عند ترقية تطبيق Django و MySQL مع الجنوب.

لقد حاولت إجراء ترقية قائمة على SQL مع الكود الذي تم إنشاؤه بواسطة أمر Django SQLALL ولدي مشكلة مماثلة.

هنا هو رمز SQL:

CREATE TABLE `programmations_basissupport` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `value` numeric(6, 0) NOT NULL
)

ALTER TABLE `programmations_concert` ADD `basis_support_id` integer AFTER program_status_id;

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

يتم رفع خطأ عند إضافة قيد FK:

ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)

هل لدى أي شخص فكرة؟

تحديث: القيم الافتراضية حيث مفقودة ولكن حتى لو قمت بإضافة الافتراضي = '' في نموذج Django ، فإن إنشاء مفاتيح أجنبية يفشل.

شكرا لمساعدتك

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

المحلول 3

لقد أصلحت أخيرًا المشكلة بفضل الحل البديل. يعمل ALTER بشكل جيد على جهاز DEV الخاص بي أثناء فشله في المضيف. لم أجد السبب لكني نجحت في جعلها تعمل عن طريق التصدير والترحيل على جهاز Dev الخاص بي وإعادة الاستيفاء.

نصائح أخرى

يبدو أنك تحاول إضافة قيود برمز/اسم موجود بالفعل.

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

يمكن تغييرها إلى:

ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

كان هناك نفس المشكلة. وأخيراً أجد أنه في حقل الجدول المشار إليه كان "غير موقّع" ولكن في جدول المرجع - غير موقّع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top