MySQL 在创建语句时出错

Posted

技术标签:

【中文标题】MySQL 在创建语句时出错【英文标题】:Error in MySQL on create statement 【发布时间】:2015-09-14 17:14:26 【问题描述】:

我怀疑我在下面的表格语句中做错了什么:

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;

【问题讨论】:

我的怀疑来自外键声明 你在 *** 上搜索过吗?似乎有几篇关于错误 150 的帖子。 【参考方案1】:

您不能将外键关系添加到任何列。它需要有一个索引。 最简单的方法是:

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)
);

【讨论】:

那么我如何检查另一个表的列中是否有 vlue 我要添加索引吗?如果应该怎么做? @user2862454 。 . .使用主键。这是建立外键关系的正确方法。

以上是关于MySQL 在创建语句时出错的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库常见操作命令

MySQL触发器语句,那个地方出错了吗,请大神解答一下

创建测试数据库时出错 - django、docker、mysql

使用 Terraform 创建 AWS MySQL RDS 实例时出错

创建 SQL 模型连接时出错。 Eclipse 到 mysql

mysql创建用户账号出错