當我嘗試創建一個名爲Sales的表時,MySQL會給出以下錯誤。我不知道問題出在哪裏,我瞥了一眼http://dev.mysql.com/doc/refman/4.1/en/innodb-foreign-key-constraints.html,看看我犯了什麼錯誤,但我無法說清楚。 我得到這個錯誤在MySQL 5.6.11,但不是在67年5月1日無法添加外鍵約束
Error
SQL query:
CREATE TABLE IF NOT EXISTS Sales(
name VARCHAR(30) NOT NULL ,
address VARCHAR(70) NOT NULL ,
serialsold VARCHAR(20) UNIQUE NOT NULL ,
background_check VARCHAR(9) NOT NULL ,
soldfor FLOAT NOT NULL ,
datesold TIMESTAMP DEFAULTNOW() ,
FOREIGN KEY (serialsold) REFERENCES Guns(serialnumber) ON DELETE SET NULL ON UPDATE CASCADE ,
PRIMARY KEY (background_check)
);
MySQL said: Documentation
#1215 - Cannot add foreign key constraint
我的槍和購買表格:
CREATE TABLE IF NOT EXISTS Purchases
(
name VARCHAR(30) NOT NULL,
address VARCHAR(70) NOT NULL,
serialbought VARCHAR(20) UNIQUE NOT NULL,
boughtfor FLOAT,
datebought TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (serialbought)
);
CREATE TABLE IF NOT EXISTS Guns
(
sequence INTEGER(4) NOT NULL AUTO_INCREMENT,
manufacturer VARCHAR(30) NOT NULL,
model VARCHAR(20) NOT NULL,
caliber VARCHAR(10) NOT NULL,
serialnumber VARCHAR(20) UNIQUE NOT NULL,
type VARCHAR(10) NOT NULl,
sellsfor FLOAT DEFAULT NULL,
FOREIGN KEY (serialnumber) REFERENCES Purchases(serialbought)
ON DELETE RESTRICT ON UPDATE RESTRICT,
PRIMARY KEY (sequence)
);
請出示您的「槍」表 – peterm
其中一個原因可能是您創建表的系列*(在父母之前創建子女)*在您的DDL腳本開始處設置'foreign_key_checks = 0'。所以按創作順序不會產生問題。 – SajjadHashmi
我已經嘗試過了,它不起作用。我先創建了購買,然後是槍支,然後嘗試了銷售,但它不起作用。 – user3015939