![](/img/trans.png)
[英]Two Foreign Keys raise “Can' create table” on MySQL AUTO_INCREMENT PRIMARY KEY
[英]Can't create an auto_increment primary key, when there is a foreign key which is auto_inc in origin
我有2張桌子:
包括:
CREATE TABLE incidencies ( id_inc INT(7) ZEROFILL NOT NULL auto_increment PRIMARY KEY, empresa VARCHAR(40), maquina VARCHAR(20), tipus_inc VARCHAR(20), estat_mon VARCHAR(20), estat_inc VARCHAR(20), dia_inc DATE, hora_inc TIME, descripcio VARCHAR(200) ) CHARACTER SET utf8 engine=innodb;
COMENTARIS:
CREATE TABLE comentaris ( id_inc INT(7) ZEROFILL NOT NULL, id_com INT(3) ZEROFILL NOT NULL auto_increment, data_com DATE, hora_com TIME, comentari VARCHAR(999), PRIMARY KEY(id_inc, id_com), FOREIGN KEY (id_inc) REFERENCES incidencies (id_inc) ON DELETE CASCADE ON UPDATE CASCADE ) CHARACTER SET utf8 engine=innodb;
如您所見,在COMENTARIS
表上, ID_INC
是一個外鍵,它的起源是auto_incremental,但現在不再在COMENTARIS
。
現在,我確實要使字段ID_COM
auto_incremental,並使它們均為主鍵。
該表應如下所示:
ID_INC | ID_COM 001 | 001 001 | 002 001 | 003 002 | 004 003 | 005
問題是,MySQL似乎將ID_INC
檢測為auto_incremental字段,該字段不再在COMENTARIS
表上。
當我嘗試使ID_COM
,出現以下錯誤消息:
錯誤1075(42000):錯誤的表格定義; 只能有一個自動列,並且必須將其定義為鍵
該數據庫必須是InnoDB
引擎。
有什么辦法嗎?
該問題與外鍵無關。 如果這是您運行的所有代碼,則:
CREATE TABLE comentaris
(
id_inc INT(7) ZEROFILL NOT NULL,
id_com INT(3) ZEROFILL NOT NULL auto_increment,
PRIMARY KEY(id_inc, id_com)
)
engine=innodb;
...您仍然會遇到相同的錯誤。
為了能夠在id_com
上使用AUTO_INCREMENT
,您需要有一個鍵,其中id_com
是第一項或唯一項。 到目前為止,只有id_com
是第二項的主鍵, id_com
是不夠的,因為MySQL不能為此目的使用該索引。
我給您的印象是您有錯別字,而且您確實想要這樣:
CREATE TABLE comentaris
(
id_inc INT(7) ZEROFILL NOT NULL,
id_com INT(3) ZEROFILL NOT NULL auto_increment,
PRIMARY KEY(id_com)
)
engine=innodb;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.