ฉันต้องการเพิ่ม Foreign Key ไปยังตารางชื่อ "katalog"
ALTER TABLE katalog
ADD CONSTRAINT `fk_katalog_sprache`
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL;
เมื่อฉันพยายามทำสิ่งนี้ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:
Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150)
ข้อผิดพลาดในสถานะ INNODB:
120405 14:02:57 ข้อผิดพลาดในข้อ จำกัด foreign key ของ table mytable # sql-7fb1_7d3a:
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL:
Cannot resolve table name close to:
(`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL
เมื่อฉันใช้คิวรีนี้มันใช้งานได้ แต่มีการกระทำที่ "ผิดชอบ":
ALTER TABLE `katalog`
ADD FOREIGN KEY (`Sprache` ) REFERENCES `sprache` (`ID` )
ตารางทั้งสองเป็น InnoDB และทั้งสองฟิลด์เป็น "INT (11) ไม่ใช่ null" ฉันใช้ MySQL 5.1.61 กำลังพยายามยิง ALTER Query นี้ด้วย MySQL Workbench (ใหม่ที่สุด) บน MacBook Pro
ตารางสร้างข้อความสั่ง:
CREATE TABLE `katalog` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`AnzahlSeiten` int(4) unsigned NOT NULL,
`Sprache` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `katalogname_uq` (`Name`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC$$
CREATE TABLE `sprache` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Bezeichnung` varchar(45) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Bezeichnung_UNIQUE` (`Bezeichnung`),
KEY `ix_sprache_id` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
katalog
ไม่มีส่วนดังนั้นสองคอลัมน์จึงไม่เหมือนกัน int(11) unsigned
sprache
usigned
auto_increment
คอลัมน์ที่ไม่ดี นอกจากนี้ยังมีคู่มือ MySQL Corresponding columns in the foreign key and the referenced key must have similar internal data types inside InnoDB so that they can be compared without a type conversion. The size and sign of integer types must be the same. The length of string types need not be the same. For nonbinary (character) string columns, the character set and collation must be the same.
กล่าวว่า: ดังนั้นใช่ประเภทข้อมูลที่คล้ายกันและเครื่องหมายเดียวกัน
SHOW CREATE TABLE
ฉันสามารถ แต่ถาม - เป็นชื่อคอลัมน์จริงๆ ID ตัวพิมพ์ใหญ่?