mysql foreign key 出错_mysql – 添加FOREIGN KEY时出错“无法创建表…”

本文记录了一次在MySQL中创建表并添加外键约束时遇到的问题及错误信息。作者尝试在表`Table1`中添加一个外键约束,但遇到了无法创建表的错误,并通过`SHOW ENGINE INNODB STATUS`命令进一步查看错误详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我已经通过脚本创建了表:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

DROP TABLE IF EXISTS `Table1`;

CREATE TABLE IF NOT EXISTS `Table1` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`parentId` bigint(20) DEFAULT NULL,

`name` varchar(1024) NOT NULL,

`description` varchar(16384) NOT NULL DEFAULT '',

`imageId` bigint(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `name` (`name`(255)),

KEY `parentId` (`parentId`),

KEY `imageId` (`imageId`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;

INSERT INTO `Table1` (`id`, `parentId`, `name`, `description`, `imageId`) VALUES

(0, NULL, 'name1', '', NULL),

(12, 0, 'name2', '', NULL);

然后我尝试添加外键:

ALTER TABLE `Table1`

ADD CONSTRAINT `Table1_ibfk_2`

FOREIGN KEY (`parentId`) REFERENCES `Table1` (`id`);

并获得以下错误:

ERROR 1005 (HY000): Can't create table 'sandbox.#sql-c28_4c' (errno: 150)

怎么了?

我跑

SHOW ENGINE INNODB STATUS;

有最新的外键错误如下:

------------------------

LATEST FOREIGN KEY ERROR

------------------------

110504 22:06:55 Error in foreign key constraint of table sandbox/#sql-c28_61:

FOREIGN KEY (`parentId`) REFERENCES `Table1` (`id`):

Cannot resolve table name close to:

(`id`)

------------

但它并没有帮助我认识到什么是错的.

我使用Windows Vista,MySql 5.5.11

更新:

从MySql 5.0.67升级时出现问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值