簡體   English   中英

將帶有FOREIGN KEY的表添加到MySQL數據庫會導致errno 150

[英]Adding table with FOREIGN KEY to a MySQL database causes errno 150

我正在嘗試執行以下SQL並收到errno:150'無法創建表path_relations'作為響應。 根據MySQL文檔,這是由我的FOREIGN KEY約束引起的。 我究竟做錯了什么?

DROP TABLE IF EXISTS `paths`;
DROP TABLE IF EXISTS `path_relations`;

CREATE TABLE `paths` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `path_relations` (
    `ancestor` int(11) NOT NULL DEFAULT '0',
    `descendant` int(11) NOT NULL DEFAULT '0',
    PRIMARY KEY(`ancestor`, `descendant`),
    FOREIGN KEY(`ancestor`) REFERENCES paths(`id`),
    FOREIGN KEY(`descendant`) REFERENCES paths(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

這是您的清單,祝您好運;)

1)外鍵源的類型和參考字段必須相同

2)源域和引用域都必須未簽名

3)源字段必須被索引

4)兩個表都必須是InnoDB

如果您將paths.id 簽名,是否paths.id

更新:在第一個表中,您將整數值定義為無符號,而在第二個表中,您沒有定義。 這些字段的結構必須相同才能滿足外鍵。

表格中是否已有數據? 如果是這樣,請確保所有記錄都將滿足約束條件。 外鍵列中的NULL值將阻止此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM