7

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は作成されません。

4

1 に答える 1

15

外部キーの両方の列が同じ型である必要があります。は ( MySQL Type OverviewによるとSERIAL) のエイリアスであるため、のタイプを変更する必要があります。最後のステートメントをこれに変更すると、次のようになります。BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUEfecha.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;
于 2013-01-03T23:38:11.623 に答える