表创建时出现SQL错误150

时间:2015-12-24 18:12:27

标签: sql foreign-keys

我知道错误150与外键有关,但我无法弄清楚这里有什么问题。

CREATE TABLE IF NOT EXISTS User(

   id_user INT NOT NULL  AUTO_INCREMENT PRIMARY KEY,
   nom VARCHAR(255) NOT NULL,
   prenom VARCHAR(255) NOT NULL,
   naissance DATE NOT NULL,
   email VARCHAR(255) NOT NULL

);


CREATE TABLE IF NOT EXISTS Livre(
   id_livre INT NOT NULL  AUTO_INCREMENT PRIMARY KEY,
   titre VARCHAR(255) NOT NULL,
   parution DATE NOT NULL,
   id_edit INT NOT NULL,
   id_user INT NOT NULL,

   FOREIGN KEY ( id_edit)
   REFERENCES Editeur(id_edit)
   ON DELETE CASCADE,

   FOREIGN KEY ( id_user)
   REFERENCES User(id_user)
   ON DELETE CASCADE      

);


CREATE TABLE IF NOT EXISTS Publication(

   id_pub INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   texte TEXT NOT NULL,
   date_pub DATE NOT NULL,
   titre_pub VARCHAR(255) NOT NULL,
   id_livre INT NOT NULL,
   id_user INT NOT NULL,

   FOREIGN KEY ( id_user)
   REFERENCES User(id_user)
   ON DELETE CASCADE,

   FOREIGN KEY (id_livre)
   REFERENCES Livre(id_livre)
   ON DELETE CASCADE
);


CREATE TABLE IF NOT EXISTS Editeur(
   id_edit INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   nom VARCHAR(255) NOT NULL,
   pays VARCHAR(255) NOT NULL,
   adresse VARCHAR(255) NOT NULL,
   tel VARCHAR(255) NOT NULL

);

当我尝试创建表Livre和Publication时发生错误。 类型是相同的,所以它似乎不是问题。

1 个答案:

答案 0 :(得分:1)

请注意您在其中创建表格的 订单

例如,Livre的表创建语句在Editeur上定义了一个外键。但表Editeur尚未创建。

根据需要调整create table语句顺序。