我尝试在 MySQL 中创建以下表:
CREATE TABLE IF NOT EXISTS cliente(
id_cliente SERIAL PRIMARY KEY,
nombre_cliente VARCHAR(20) NOT NULL,
direccion_cliente VARCHAR(40)
)ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS archivo(
id_archivo SERIAL PRIMARY KEY,
nombre_archivo VARCHAR(30),
id_cliente INTEGER
)ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS fecha(
id_fecha INTEGER PRIMARY KEY,
fk_cliente INTEGER,
id_archivo INTEGER,
FOREIGN KEY(fk_cliente) REFERENCES cliente(id_cliente)
)ENGINE=InnoDB;
但是,我收到错误:
Error Code: 1005. Can't create table 'adm_bordados.fecha' (errno: 150)
未创建最后一个表
fetcha
。 最佳答案
外键的两列必须是相同的类型。由于 SERIAL
是 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
的别名(根据 MySQL Type Overview ),您必须更改 fecha.fk_cliente
的类型。将最后一个语句更改为此应该为您做到:
CREATE TABLE IF NOT EXISTS fecha(
id_fecha INTEGER PRIMARY KEY,
fk_cliente BIGINT UNSIGNED,
id_archivo INTEGER,
FOREIGN KEY(fk_cliente) REFERENCES cliente(id_cliente)
)ENGINE=InnoDB;
关于mysql - 如何将外键引用到串行数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14148880/