【问题标题】:phpmyadmin doesnt allow me to add foreign key relationshipphpmyadmin 不允许我添加外键关系
【发布时间】:2012-12-29 05:51:15
【问题描述】:

我尝试添加外键,但没有添加。我读了几个关于这个问题的问题。但这些选项不适用于我。 (Tried as this way too

我的表结构如下

tab_project

列名

ProjectID --> 主键

项目名称

tab_project_day

主键 ----> 项目 ID + 日期

外键---->ProjectID引用tab_project中的ProjectID

tab_photo

主键---->

我想按如下方式创建 tab_photo 外键:

tab_photo.ProjectID ---> 参考 tab_project_day.ProjectID

tab_photo.Day ------- > 参考 tab_project_day.day

在这里它不允许我添加 tab_photo.Day 键。

我试过这个——

ALTER TABLE `tab_photo` ADD FOREIGN KEY (`Day`) REFERENCES
`xyz`.`tab_project_day`(`Day`) ON DELETE RESTRICT ON UPDATE RESTRICT;

它给出以下错误:

#1005 - Can't create table 'xyz.#sql-97c_1c6' (errno: 150)

这是什么原因?请帮忙!!!

【问题讨论】:

  • tab_project_day 有数据吗?
  • @legendinmaking yes... tab_project_day 中有数据。但 tab_photo 中没有数据?这可能是原因吗?
  • tab_photo.Day 中不应该有 tab_project_day.Day 中不存在的值
  • @legendinmaking 我也从 tab_project_day 表中删除了所有数据.. 但它仍然不允许我添加外键
  • 并确保 tab_project_day.Day 是一个索引

标签: mysql phpmyadmin


【解决方案1】:

请检查两个表的排序顺序。我发现如果表 A 与表 B 的排序规则不同,则无法创建外键。两个表必须是相同的排序规则。此外,列需要是相同的排序规则。

我怀疑这可能是您的问题。运行以下查询以查看排序规则

表格排序:

SELECT   TABLE_NAME,
         TABLE_COLLATION
 FROM    INFORMATION_SCHEMA.TABLES
 WHERE   TABLE_NAME = "tab_project" 
         OR TABLE_NAME="tab_project_day"

列排序:

SELECT       TABLE_NAME
             , COLUMN_NAME
             , COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = "tab_project" 
        OR TABLE_NAME="tab_project_day"

【讨论】:

  • 我也撞到了那个。这令人难以置信,因为我无法弄清楚,然后我只是在新数据库中重新创建了表并且它起作用了。我花了一段时间才意识到排序规则哪里错了。
猜你喜欢
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 2021-12-10
相关资源
最近更新 更多