MySQL - #1215 - 无法添加外键约束
Posted
技术标签:
【中文标题】MySQL - #1215 - 无法添加外键约束【英文标题】:MySQL - #1215 - Cannot add foreign key constraint 【发布时间】:2015-02-04 02:41:10 【问题描述】:mysql 对我来说是新事物。我通常使用 Oracle 数据库。我必须将一个小数据库从 Oracle 10g 转换为 MySQL 语法才能使用 phpMyAdmin。
我尝试了所有方法,但在我的代码中没有发现任何问题。我有这两个表,它们只是不会与外键挂钩。
CREATE TABLE Supplier
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
Company_name VARCHAR (100) ,
Company_address VARCHAR (100) ,
Bank_account VARCHAR (100) ,
CONSTRAINT PK_Supplier PRIMARY KEY (ID)
) ;
CREATE TABLE Meat
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
Initial_weight VARCHAR (50) ,
Actual_weight VARCHAR (50) ,
Date_of_delivery DATETIME ,
Durability DATETIME ,
Supplier_ID DECIMAL(38) NOT NULL ,
CONSTRAINT PK_Meat PRIMARY KEY (ID) ,
FOREIGN KEY (Supplier_ID) REFERENCES Supplier(ID)
) ;
MySQL 查询以错误代码结束:#1215 - 无法添加外键约束
有人看到这两张表有问题吗?
【问题讨论】:
为Dodavatel
提供表定义
对不起,我的错误。当然应该有Supplier
而不是Dodavatel
。我正在将代码从捷克语翻译成英语,但我忘了翻译最后一行的最后一部分。现在实际上是代码..当然仍然无法正常工作..
【参考方案1】:
Supplier_ID
列有DECIMAL
类型,而Supplier
表中的ID
是INT UNSIGNED
。
改成这样:
CREATE TABLE Supplier
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
Company_name VARCHAR (100) ,
Company_address VARCHAR (100) ,
Bank_account VARCHAR (100) ,
CONSTRAINT PK_Supplier PRIMARY KEY (ID)
) ;
CREATE TABLE Meat
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
Initial_weight VARCHAR (50) ,
Actual_weight VARCHAR (50) ,
Date_of_delivery DATETIME ,
Durability DATETIME ,
Supplier_ID INT UNSIGNED NOT NULL ,
CONSTRAINT PK_Meat PRIMARY KEY (ID) ,
FOREIGN KEY (Supplier_ID) REFERENCES Supplier(ID)
) ;
【讨论】:
以上是关于MySQL - #1215 - 无法添加外键约束的主要内容,如果未能解决你的问题,请参考以下文章
一般错误:1215 无法添加外键约束,Laravel 5 & MySQL
MySQL : ERROR 1215 (HY000): 无法添加外键约束
MYSQL Workbench - 错误:错误 1215:无法添加外键约束