【问题标题】:cannot add foreign key constraint in phpmyadmin无法在 phpmyadmin 中添加外键约束
【发布时间】:2016-07-12 06:18:24
【问题描述】:

在 phpmyadmin 中创建 2 个表时,出现这样的错误。

MySQL 说:文档

#1215 - 无法添加外键约束

我的表结构是

CREATE TABLE `iwd_storelocator_manufacturer` (
`entity_id`  int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name`  varchar(255) NOT NULL ,
`code`  varchar(255) NOT NULL ,
`grayscale_image`  varchar(255) NULL ,
`color_image`  varchar(255) NULL ,
PRIMARY KEY (`entity_id`)
);

CREATE TABLE `iwd_storelocator_manufacturer_to_store` (
`manufacturer_id`  int(11) UNSIGNED NOT NULL ,
`store_id`  int(11) NOT NULL ,
`preferred`  int NULL ,
PRIMARY KEY (`manufacturer_id`, `store_id`),
FOREIGN KEY (`store_id`) REFERENCES `iwd_storelocator_store` (`store_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (`manufacturer_id`) REFERENCES `iwd_storelocator_manufacturer` (`entity_id`) ON DELETE RESTRICT ON UPDATE CASCADE
);

你能告诉我它有什么问题吗?

这是我的 iwd_storelocator_store 表

iwd_storelocator_store

【问题讨论】:

  • 我已经成功创建了这些表,但没有对 iwd_storelocator_store 进行 FK。也许这张表是问题的原因?
  • iwd_storelocator_store表的结构在哪里?
  • 我的 iwd_storelocator_store 表结构已给出。
  • 帕维尔..你是对的。我也可以在没有 FK 的情况下创建 iwd_storelocator_store 。但我在第二张桌子上也需要那个 id
  • 编辑了我的答案@Sheen

标签: mysql phpmyadmin


【解决方案1】:

为了确切知道哪里出了问题,您必须查看LATEST FOREIGN KEY ERROR 部分。

使用此查询找出答案:

SHOW ENGINE INNODB STATUS

此外,请确保所有数据类型都相同:子列的数据类型必须与父列的数据类型匹配。

如果问题是表的创建顺序(可能导致此错误),只需运行set foreign_key_checks=0,这样您就可以按任何顺序创建表,而不必创建所有父表之前 子表。

最后,确保所有表的编码都相同。

编辑:在您的情况下,您还应该给我们iwd_storelocator_store 表的结构

现在我们有了您的 iwd_storelocator_store 表,我认为您应该在 store_id 列上创建一个索引,因为它不是表的主键

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 2014-11-17
    • 2020-09-26
    • 2019-11-13
    • 2020-09-12
    • 2017-07-16
    • 2013-03-10
    相关资源
    最近更新 更多