我试图添加外键但不添加它。我读了几个关于这件事的问题。但这些选择不适用于我。 (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)
这是什么原因?请帮忙!!!
答案 0 :(得分:2)
请检查两个表的整理顺序。我发现如果表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"