我尝试添加外键,但未添加。我读了几个有关此事的问题。但是这些选项对我不起作用。 (Tried as this way too

我的表结构如下

tab_project

栏名

ProjectID->主键

项目名

tab_project_day

主键----> ProjectID + Day

外键----> 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)


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

最佳答案

请检查两个表的排序规则。我发现如果表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"

关于mysql - phpmyadmin不允许我添加外键关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14332523/

10-11 23:48