2013-01-03 38 views
2

我試着在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不創建。

回答

8

外鍵的兩列必須是相同的類型。由於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; 
+0

感謝mattedgod,現在它完美。 – felipedz

相關問題