Когда я пытаюсь создать таблицу с именем Sales, MySQL выдает следующую ошибку. Я не могу сказать, в чем проблема, и я просмотрел http://dev.mysql.com/doc/refman/4.1/en/innodb-foreign-key-constraints.html, чтобы увидеть, какую ошибку я сделал, но я не могу сказать. Я получаю эту ошибку в MySQL 5.6.11, но не в 5.1.67.
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)
);
Guns
таблицу - person peterm   schedule 21.11.2013foreign_key_checks=0
в начале вашего DDL-скрипта. Таким образом, порядок создания не создает проблем. - person SajjadHashmi   schedule 21.11.2013