bug--215 Can not add foreign key constraint

本文详细介绍如何修复215错误:无法添加外键约束,包括设置数据库引擎类型一致,确保关联字段属性匹配,如类型、字符集等。
错误:

215 Can not add foreign key constraint
也就是添加外键失败

解决


https://blog.youkuaiyun.com/u011951999/article/details/53184845
总结起来就是
1.设置引擎类型
2.两个要关联的属性所有信息必须一样,像类型,字符集,排序规则,长度。。。。

yarn run v1.22.22 $ nodemon -r --exec ts-node ./app.ts [nodemon] 2.0.20 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: ts,json [nodemon] starting `ts-node -r ./app.ts` 2025-10-06 00:06:13 SERVER ERROR : 服务器出错: QueryFailedError: ER_CANNOT_ADD_FOREIGN: Cannot add foreign key constraint at Query.<anonymous> (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\typeorm\src\driver\mysql\MysqlQueryRunner.ts:222:33) at Query.<anonymous> (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:526:10) at Query._callback (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:488:16) at Query.Sequence.end (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) at Query.ErrorPacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\sequences\Query.js:92:8) at Protocol._parsePacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:88:28) { query: 'CREATE TABLE `chance_card` (`id` varchar(36) NOT NULL, `name` varchar(255) NOT NULL, `describe` varchar(255) NOT NULL, `icon` varchar(255) NOT NULL, `color` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `effectCode` text NOT NULL, `create_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6), `update_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB', parameters: undefined, driverError: Error: ER_CANNOT_ADD_FOREIGN: Cannot add foreign key constraint at Query.Sequence._packetToError (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Query.ErrorPacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\sequences\Query.js:79:18) at Protocol._parsePacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:517:28) at Socket.emit (node:domain:489:12) -------------------- at Protocol._enqueue (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\protocol\Protocol.js:144:48) at PoolConnection.query (E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\mysql\lib\Connection.js:198:25) at E:\fatpaper\fatpaper-monopoly\monopoly-server\node_modules\typeorm\src\driver\mysql\MysqlQueryRunner.ts:194:36 at processTicksAndRejections (node:internal/process/task_queues:95:5) { code: 'ER_CANNOT_ADD_FOREIGN', errno: 1215, sqlMessage: 'Cannot add foreign key constraint', sqlState: 'HY000', index: 0, sql: 'CREATE TABLE `chance_card` (`id` varchar(36) NOT NULL, `name` varchar(255) NOT NULL, `describe` varchar(255) NOT NULL, `icon` varchar(255) NOT NULL, `color` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `effectCode` text NOT NULL, `create_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6), `update_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB' }, code: 'ER_CANNOT_ADD_FOREIGN', errno: 1215, sqlMessage: 'Cannot add foreign key constraint', sqlState: 'HY000', index: 0, sql: 'CREATE TABLE `chance_card` (`id` varchar(36) NOT NULL, `name` varchar(255) NOT NULL, `describe` varchar(255) NOT NULL, `icon` varchar(255) NOT NULL, `color` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `effectCode` text NOT NULL, `create_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6), `update_time` datetime(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB' }
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值