MySQL 外键错误 150

标签 mysql sql database foreign-keys sqlfiddle

我在 MySQL 上使用外键时遇到这个问题。我是这门语言的新手,我已经阅读了很多官方文档,但没有得到任何明确的信息。

我还检查了该网站上有关外键的其他问题,但也没有帮助我。我什至复制了正确的代码并更改了我的案例的名称,但它一直给我错误。

我正在使用 SQL Fiddle 来检查我的 sintaxis。这是代码:

CREATE TABLE Aparato(
Codigo SMALLINT NOT NULL AUTO_INCREMENT,
Descripcion VARCHAR(40) NOT NULL,
TipoNombre VARCHAR(20) NOT NULL,
TipoCaracteristicas VARCHAR(30) NOT NULL,
FOREIGN KEY (TipoNombre) REFERENCES Tipo(Nombre),
FOREIGN KEY (TipoCaracteristicas) REFERENCES Tipo(Caracteristicas),
PRIMARY KEY (Codigo)
);

CREATE TABLE Tipo(
Nombre VARCHAR(20) NOT NULL,
Caracteristicas VARCHAR(30) NOT NULL,
PRIMARY KEY (Nombre)
);

它是西类牙语的,但我认为这不相关。我收到这个错误,你可以自己尝试一下( SQL Fiddle ):

Schema Creation Failed: Can't create table 'db_2_b9c14b.aparato' (errno: 150):

连我的数据库老师都找不到问题出在哪里。

最佳答案

您可以将您的特征标记为“唯一”或添加主键:

CREATE TABLE Tipo(    
  Nombre VARCHAR(20) NOT NULL, 
  Caracteristicas VARCHAR(30) NOT NULL,  
  PRIMARY KEY (Nombre,Caracteristicas) 
);

关于MySQL 外键错误 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22050494/

相关文章:

mysql - SQL 按列和列值分组?

mysql - 复杂定价矩阵的数据库结构

mysql - 链接数据库表标准实践

mysql - CakePHP:如何计算查找中的 hasMany 记录数?

mysql - 带有数据聚合的 SQL 循环

Mysql如何创建调用存储函数

mysql - 大量数据的 SQL 与 NoSQL 性能

mysql - 删除mysql中包含空格的列

c# - DataGridview 重复数据或不将新行保存到数据库

php - 使用 php 和 mysql 在数据库中查找匹配项