0

我试图添加外键,但没有添加它。我读了几个关于这个问题的问题。但这些选项不适用于我。(也尝试过这种方式

我的表结构如下

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)

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

4

1 回答 1

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"
于 2013-01-15T07:11:50.907 回答