我在 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/