Tôi muốn thêm khóa ngoại vào bảng có tên là "katalog".Thêm khóa ngoại vào bảng hiện có
ALTER TABLE katalog
ADD CONSTRAINT `fk_katalog_sprache`
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL;
Khi tôi cố gắng để làm điều này, tôi nhận được thông báo lỗi này:
Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150)
Lỗi trong tình trạng InnoDB:
120405 14:02:57 Lỗi trong ràng buộc khóa ngoài của bảng 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
Khi tôi sử dụng truy vấn này nó hoạt động, nhưng với sai "về xóa" hành động:
ALTER TABLE `katalog`
ADD FOREIGN KEY (`Sprache`) REFERENCES `sprache` (`ID`)
Cả hai bảng là InnoDB và cả hai lĩnh vực là "INT (11) không phải null". Tôi đang sử dụng MySQL 5.1.61. Đang cố gắng kích hoạt truy vấn ALTER này bằng MySQL Workbench (mới nhất) trên MacBook Pro.
Bảng Tạo câu lệnh:
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
Vì bạn không đăng đầu ra của 'HIỂN THỊ TẠO TABLE', tôi chỉ có thể hỏi - là tên cột thực sự là ID, được viết hoa? –
Tôi đã thêm điều này ở trên. – frgtv10
Vâng, nó dễ dàng hơn để phát hiện ngay bây giờ - 'katalog' có' int (11) unsigned'. 'sprache' không có phần' usigned', do đó hai cột không giống nhau. –