2013-01-09 74 views
-1

为什么这个声明不起作用?为什么这个声明失败?

编辑:我的错,我想到了MSSQL

CREATE TABLE capacidad (
    cod_capacidad INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    cod_area INTEGER UNSIGNED NOT NULL, 
    capacidad VARCHAR(100) NOT NULL, 
PRIMARY KEY(cod_capacidad), 
INDEX capacidad_FKIndex1(cod_area), 
FOREIGN KEY(cod_area) 
    REFERENCES AREA(cod_area) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION 
    ) 
ENGINE=INNODB; 
+5

看起来不错。什么是错误? – Kermit

+1

你的'AREA'表是否存在? –

+0

对不起,我发现错误:AREA是一个关键字,这个原因是问题,谢谢你的回答 – luchopintado

回答

-1

尝试使用外语法CREATE INDEX声明CREATE TABLE创建索引。

PS。此声明适用于我的数据库。

2

拿不到错误150:你必须检查以下内容:

  1. 这两个表必须是ENGINE = InnoDB的
  2. 这两个表必须具有相同的字符集。
  3. 父表中的PK列和FK列必须是相同的数据类型。
  4. 父表和FK列中的PK列(如果它们具有定义归类类型)必须具有相同的归类类型;
  5. 如果外键表中已有数据,则FK列值必须与父表PK列中的值匹配。

希望这会有所帮助。

ps:你应该分享你的另一张桌子。