2015-06-28 56 views
0

我有一個疑問,我在做什麼毛病如下表聲明:錯誤在MySQL上創建聲明

的MySQL返回錯誤150

DROP table usuario; 
DROP table MiTabla; 

CREATE TABLE usuario(
id smallint unsigned auto_increment primary key, 
name varchar(20) not null 
)ENGINE=InnoDB; 

Insert into usuario (NAME) VALUES ('Antonio'),('Jose'),('Manuel'); 


CREATE TABLE MiTabla(
id smallint unsigned auto_increment primary key, 
name varchar(20) not null, 
foreign key (name) REFERENCES usuario (name) 
) ENGINE = InnoDB; 
+0

我的懷疑來自於外鍵聲明 – user2862454

+0

你做一個搜索在Stackoverflow?似乎有幾個職位關於錯誤150. – jcoppens

回答

0

您不能添加一個外鍵關係,只是任何柱。它需要有一個索引。該最簡單方法是:

CREATE TABLE usuario (
    id smallint unsigned auto_increment primary key, 
    name varchar(20) not null unique 
); 

然而,正確的方法是使用主鍵的關係:

CREATE TABLE MiTabla(
    id smallint unsigned auto_increment primary key, 
    usuario_id smalling unsigned not null, 
    foreign key (usuario_id) REFERENCES usuario(id) 
); 
+0

所以我如何檢查是否有另一張表中的列vlue我添加索引?如果是應該怎麼做? – user2862454

+1

@ user2862454。 。 。使用主鍵。這是建立外鍵關係的正確方法。 –

+0

現在感謝一切 – user2862454