如何将外键引用到串行数据类型

时间:2013-01-03 23:18:39

标签: mysql

我尝试在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

1 个答案:

答案 0 :(得分:11)

外键的两列必须属于同一类型。由于SERIALBIGINT 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;