Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-错误代码:1005。Can';t创建表';数据库名称#sql-776"f23d';(错误编号:150)_Mysql - Fatal编程技术网

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中尝试此操作,则在查询中保留不存在的数据库名称所产生的错误与原始帖子相同。