2015-06-28 49 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