gpt4 book ai didi

MySQL外键ON DELETE SET NULL检查数据类型错误

转载 作者:IT老高 更新时间:2023-10-29 00:21:08 24 4
gpt4 key购买 nike

我正在开发一个规范化的数据库,为了安全起见,我想使用外键。

我的数据库:

CREATE TABLE `names` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name_id` (`name_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

命令:

ALTER TABLE  `names` ADD FOREIGN KEY (  `name` ) REFERENCES  `temp`.`users` (
`name_id`
) ON DELETE SET NULL ON UPDATE CASCADE ;

响应(错误):
在名称上创建外键时出错(检查数据类型)

那么,如何解决这个问题?

最佳答案

错误是不言自明的。 names 表中的 Namevarchar(250) 类型,而 users 中的 name_id表的类型为 int(11)

但我相信你的意思是在 users 表中一直有一个 FK 引用 names 表。

ALTER TABLE users
ADD FOREIGN KEY (name_id) REFERENCES names (id)
ON DELETE SET NULL ON UPDATE CASCADE;

这里是 SQLFiddle 演示

关于MySQL外键ON DELETE SET NULL检查数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com