MySQL - #1215 - 无法添加外键约束

时间:2014-12-05 20:28:48

标签: mysql sql database phpmyadmin foreign-keys

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 - 无法添加外键约束

有人在这两个表中看到一些问题吗?

1 个答案:

答案 0 :(得分:1)

Supplier_ID列的格式为DECIMAL,而ID表格中的SupplierINT 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)
) ;