我试图在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;
Run Code Online (Sandbox Code Playgroud)
但是,我得到错误:
Error Code: 1005. Can't create table 'adm_bordados.fecha' (errno: 150)
Run Code Online (Sandbox Code Playgroud)
最后一个表fetcha未创建.
Mat*_*dge 12
外键的两列必须属于同一类型.由于SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE(根据MySQL类型概述)的别名,您将不得不更改类型fecha.fk_cliente.将最后一个语句更改为this应该为您完成:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4789 次 |
| 最近记录: |