在mysql中添加char类型的外键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在mysql中添加char类型的外键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
![在mysql中添加char类型的外键](/upload/InfoBanner/zyjiaocheng/911/858a6918aede454bb1dccb8f9b04d3f7.jpg)
我在mysql中添加外键时遇到了问题(使用phpmyadmin).
ALTER TABLE `production_x_country` ADD FOREIGN KEY (`country`) REFERENCES `pmdb_0.3.12`.`countries`(`iso_3166_1`) ON DELETE CASCADE ON UPDATE CASCADE;
#1215 – Cannot add foreign key constraint
基于一些研究和测试,我得出结论,CHAR(即production_x_country.country字段)不是有效的外键字段类型 – 尽管我没有在mysql文档中找到任何暗示.
如果我将列类型更改为其他字符类型(如VARCHAR),则该过程有效.
类似的问题在这里得到了“解决”,但这个相关的答案并不是关于类型问题,而是关于国家代码是主键(对我来说是完全合理的):https://stackoverflow.com/a/1419235/4302731
表格说明:
CREATE TABLE IF NOT EXISTS `countries` (
`iso_3166_1` char(3) NOT NULL, <----- primary key to be referenced to
`name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `countries` ADD PRIMARY KEY (`iso_3166_1`);
CREATE TABLE IF NOT EXISTS `production_x_country` (
`production` int(11) NOT NULL,
`country` char(3) CHARACTER SET utf8 NOT NULL <----- column that should hold the foreign key
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
是否有任何解决方案(是的,我可以继续使用varchar,但那不满意我)?最重要的是:有什么解释吗?
谢谢您的帮助!
解决了 – 请看下面我自己的答案
解决方法:
解决了!
这不是关于char字段类型,而是关于整理!
我喜欢使用UTF-8,主要是utf8_bin.我的主键校对也是如此:
`iso_3166_1` char(3) CHARACTER SET utf8
一旦我将主键的排序规则改为“latin1_swedish_ci”,外键应用程序就可以了.
导致了一个问题:为什么主键字段的排序(也许还有外键字段,还没有检查过)很重要?
内容总结
以上是互联网集市为您收集整理的在mysql中添加char类型的外键全部内容,希望文章能够帮你解决在mysql中添加char类型的外键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。