首页 / MYSQL / 如何更新mysql数据库中的外键值
如何更新mysql数据库中的外键值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何更新mysql数据库中的外键值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2038字,纯文字阅读大概需要3分钟。
内容图文
![如何更新mysql数据库中的外键值](/upload/InfoBanner/zyjiaocheng/889/9a4cfd7545a8480c87bf2a4d23eb2d59.jpg)
我有三个表:类别,语言和categories_languages. Categories_languages是多对多的表格,它们将类别和语言联系在一起.我想更新表语言中的foregin键值,但它会抛出错误#1451 – 无法删除或更新父行:外键约束失败!
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`modified` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `languages` (
`id` char(2) NOT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `categories_languages` (
`id` int(11) unsigned NOT NULL auto_increment,
`category_id` int(11) unsigned NOT NULL,
`language_id` char(2) NOT NULL,
`translation` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_category_id_language_id` (`category_id`,`language_id`),
KEY `fk_language_id` (`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
ALTER TABLE `categories_languages`
ADD CONSTRAINT `categories_languages_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `categories_languages_ibfk_2` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE;
错误对我来说很清楚,但在这种情况下如何更新键值?我尝试添加ON UPDATA CASCADE:
ALTER TABLE `categories_languages`
ADD CONSTRAINT `categories_languages_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `categories_languages_ibfk_2` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
但这也失败了消息:MySQL说:文档#1005 – 无法创建表’./ db_dodo / #sql-c2f_80e6f.frm'(错误号:121)
解决方法:
您可以暂时暂停外键检查:
SET foreign_key_checks = 0;
UPDATE languages SET id='xyz' WHERE id='abc';
UPDATE categories_languages SET language_id='xyz' WHERE language_id='abc';
SET foreign_key_checks = 1;
编辑:至于外键问题:是存储在本地或远程文件系统上的数据? errno 121是EREMOTEIO(远程I / O错误).也许目标文件系统存在权限问题,或者它不支持文件名中的#字符?
内容总结
以上是互联网集市为您收集整理的如何更新mysql数据库中的外键值全部内容,希望文章能够帮你解决如何更新mysql数据库中的外键值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。