无法创建 table 'mydb.contact'(错误号:150)
Can't create table 'mydb.contact' (errno: 150)
拜托,这是我的 sql 脚本
#-- creation de la table user
CREATE TABLE IF NOT EXISTS user(
iduser int AUTO_INCREMENT,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) ,
adressemail VARCHAR(200) NOT NULL,
motdepasse VARCHAR(200) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY(iduser)
);
#-- creation de la table user
CREATE TABLE IF NOT EXISTS contact(
idcontact INT AUTO_INCREMENT,
nom VARCHAR(45) NOT NULL,
prenom VARCHAR(45),
adressemail VARCHAR(200) UNIQUE,
user_iduser INT NOT NULL,
CONSTRAINT pk_contact PRIMARY KEY(idcontact),
CONSTRAINT fk_contact_userIduser_user FOREIGN KEY (user_iduser) REFERENCES user(iduser) ON DELETE SET NULL ON UPDATE CASCADE
);
当我在我的 maria db 数据库上执行它时,我得到这个错误:
Can't create table 'mydb.contact' (errno: 150)
在您的外键约束中,您已将删除操作设置为 set null
,但列 user_iduser
不允许空值,因为它被指定为 not null
,这使得约束无效。更改列以允许空值或更改约束中的删除操作。
在线 MySQL 手册甚至 a warning 关于这个:
If you specify a SET NULL action, make sure that you have not declared
the columns in the child table as NOT NULL.
我在 MySQL 中知道,当形成外键约束时出现问题时会返回此错误。此外 - 如果此 table 已创建、删除和重新创建,则可能存在未对齐的现有引用。
你的声明 ON DELETE SET NULL
限制你创建 table 因为你的列 user_iduser
不能像你写的那样为 NULL
user_iduser INT NOT NULL
拜托,这是我的 sql 脚本
#-- creation de la table user
CREATE TABLE IF NOT EXISTS user(
iduser int AUTO_INCREMENT,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) ,
adressemail VARCHAR(200) NOT NULL,
motdepasse VARCHAR(200) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY(iduser)
);
#-- creation de la table user
CREATE TABLE IF NOT EXISTS contact(
idcontact INT AUTO_INCREMENT,
nom VARCHAR(45) NOT NULL,
prenom VARCHAR(45),
adressemail VARCHAR(200) UNIQUE,
user_iduser INT NOT NULL,
CONSTRAINT pk_contact PRIMARY KEY(idcontact),
CONSTRAINT fk_contact_userIduser_user FOREIGN KEY (user_iduser) REFERENCES user(iduser) ON DELETE SET NULL ON UPDATE CASCADE
);
当我在我的 maria db 数据库上执行它时,我得到这个错误:
Can't create table 'mydb.contact' (errno: 150)
在您的外键约束中,您已将删除操作设置为 set null
,但列 user_iduser
不允许空值,因为它被指定为 not null
,这使得约束无效。更改列以允许空值或更改约束中的删除操作。
在线 MySQL 手册甚至 a warning 关于这个:
If you specify a SET NULL action, make sure that you have not declared the columns in the child table as NOT NULL.
我在 MySQL 中知道,当形成外键约束时出现问题时会返回此错误。此外 - 如果此 table 已创建、删除和重新创建,则可能存在未对齐的现有引用。
你的声明 ON DELETE SET NULL
限制你创建 table 因为你的列 user_iduser
不能像你写的那样为 NULL
user_iduser INT NOT NULL