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 - 无法添加外键约束
有人在这两个表中看到一些问题吗?
答案 0 :(得分:1)
Supplier_ID
列的格式为DECIMAL
,而ID
表格中的Supplier
为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)
) ;