سؤال

أواجه مشكلة في إنشاء الجدول و أنا لا أفهم ما هو الخطأ.بريس مجموعات مؤشر خطأ بجوار المفتاح الأساسي إعلان...أنا لا أفهم لماذا هذا هو الخطأ...

هذا الجدول هو طفل الجدول الذي يحتوي على واحد لكثير تحديد العلاقة مع جدول آخر.

CREATE TABLE IF NOT EXISTS `ruilen`.`Voorwerpen` (
`voorwerpen_id` INT NOT NULL AUTO_INCREMENT ,
`naam` VARCHAR( 45 ) NOT NULL ,
`beschrijving` VARCHAR( 45 ) NULL ,
`Gebruikers_gebruiker_id` INT NOT NULL ,
PRIMARY KEY ( `voorwerpen_id` , `Gebruikers_gebruiker_id` ) ,
CONSTRAINT `fk_Voorwerpen_Gebruikers1` FOREIGN KEY ( `Gebruikers_gebruiker_id` ) REFERENCES `ruilen`.`Gebruikers` (
`gebruiker_id`
) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB;

MySQL said: Documentation
#1005 - Can't create table 'ruilen.voorwerpen' (errno: 150) 

تحرير:هذا هو كل الوثائق المتعلقة رمز الخطأ يمكنني العثور على: الرابط

EDIT2: الموافقة المسبقة عن علم إزالة

EDIT3:

CREATE TABLE `gebruikers` (
 `gebruiker_id` int(11) NOT NULL,
 `naam` varchar(45) NOT NULL,
 `straat` varchar(45) NOT NULL,
 `gemeente` varchar(45) NOT NULL,
 `mail` varchar(45) NOT NULL,
 `beschrijving` varchar(45) DEFAULT NULL,
 PRIMARY KEY (`gebruiker_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
هل كانت مفيدة؟

المحلول

تحقق من أن Gebruikers_gebruiker_id و Gebruikers.gebruiker_id يكون نفس نوع البيانات.

أيضا التحقق من أن Gebruikers.gebruiker_id هو PRIMARY KEY في Gebruikers

تحديث:

لديك ON DELETE SET NULL محددة ، في حين الخاص بك Gebruikers_gebruiker_id ويعرف NOT NULL.

حلها (تغيير ON DELETE CASCADE أو مجرد إزالة شرط) وعليك أن تكون قادرا على إنشاء المرجع.

نصائح أخرى

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

وهذا is'nt بكثير سمة عربات التي تجرها الدواب من الخلية. يمكن أن يكون هناك اثنين من الأسباب المحتملة لهذا! 1) أنواع البيانات من PK وFK لا أميل المباراة. 2) لا يمكن أن يتحقق هذا الخطأ حتى في الإصدارات قبل 4.1 حيث تحتاج إلى تعريف صراحة الفهارس.

واحد من الأسباب لإضافة:

<اقتباس فقرة>   

ومحارف مختلفة أو محرك سوف أيضا أن يسبب هذه المشكلة

في تجربتي وجدوا أن هذه سمة عربات التي تجرها الدواب جدا من ماي - وأقل من المتاعب هو مجرد تفريغ بنية الجدول والبيانات، ثم إسقاط الجدول وإعادة تشغيل SQL من تفريغ ثم يدويا إعادة إنشاء فهارس و قيود المفاتيح الخارجية عند الحاجة.

وكان لي قيدا بنفس الاسم في جدول مختلف. حاول تغيير اسم القيد الخاص بك.

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