سؤال

لدي مشكلة في قاعدة بيانات SQL التي أوجدها. أحاول تشغيله لاستخدام InnoDB لكنني لا أستطيع أن أحصل على بناء الجملة (أو ربما المنطق) الصحيح للمتوسع.

هنا جزء من رمز الخطأ. وبعد لا يحب الخط 40.

خطأ في الإخراج في النموذج المعتاد (بالنسبة لي على الأقل)

ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)

يحرر:

هنا ملف SQL بالكامل أحاول أن أنابيب إذا كان ذلك يساعد.

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

المحلول

مفاتيح أجنبية يجب أن تكون مؤشرات. فياسم الدور)

جرب هذا:

CREATE TABLE IF NOT EXISTS `role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(30) NOT NULL,
  `description` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB;

نصائح أخرى

هل تعني عن قيد المفتاح الخارجي للأعمدة "الدور" في استخدام الاسم بدلا من المعرف؟ يبدو أن السطر التالي (السطر 43):

FOREIGN KEY (role) REFERENCES role(name)

يجب ان يكون:

FOREIGN KEY (role) REFERENCES role(id)

هذا ينفذ دون أخطاء.

بدلا من ذلك، يمكن تغيير نوع بيانات "الموظفين" (السطر 40، ودور INT NULL) إلى Char (30) لا لاغية.

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