MySQL-错误代码:1005。Can';t创建表';数据库名称#sql-776"f23d';(错误编号:150)
我有以下资料:MySQL-错误代码:1005。Can';t创建表';数据库名称#sql-776"f23d';(错误编号:150),mysql,Mysql,我有以下资料: CREATE TABLE afil2 ( id bigint(20) NOT NULL AUTO_INCREMENT, `apellido` varchar(30), `nombre` varchar(30), documento varchar(30), PRIMARY KEY (`id`) ); ALTER TABLE ordenes ADD COLUMN afil2 bigint(20); ALTER TABLE ordenes A
CREATE TABLE afil2 (
id bigint(20) NOT NULL AUTO_INCREMENT,
`apellido` varchar(30),
`nombre` varchar(30),
documento varchar(30),
PRIMARY KEY (`id`)
);
ALTER TABLE ordenes ADD COLUMN afil2 bigint(20);
ALTER TABLE ordenes ADD FOREIGN KEY(afil2) REFERENCES database_name.afil2(id);
在最后一行,我得到了错误代码:1005。无法创建表“数据库名称”。#sql-776_f23d(错误号:150)
我做错了什么
ALTER TABLE ordenes ADD FOREIGN KEY(afil2) REFERENCES database_name.afil2(id);
我认为您应该用这一行中的实际db名称替换
数据库\u名称
确保两个表的类型相同(例如InnoDB)。否则约束将失败。这通常意味着外键上的类型不匹配。你在使用InnoDB吗?你有另一个叫做ordenes的表吗?因为您正在创建一个名为afil2的表,然后在afil2中添加一个名为afil2的列,然后将其作为afil2表上afil2列的外键,以引用afil2表中的id。有些东西看起来不对劲显示引擎InnoDB状态
应该会告诉您原因。@MrJamin我假设表是默认使用InnoDB创建的。非常感谢。如果您愿意,您可以发布答案,我会接受。@ObieMD5这不太正确-如果列可为空,那么您可以在引用的表中没有相应的条目。@N.B.如果您在Mysql 5.5.23中尝试此操作,则在查询中保留不存在的数据库名称所产生的错误与原始帖子相同。