mysql - mysql - 如何在具有不同定义的列上拥有外键
问题描述
我有一个非常奇怪的问题(嗯......不是问题,因为它并没有真正产生任何问题......但是)。在我的一个数据库中,我有一个外键链接具有不同定义的 2 列(INT(10) UNSIGNED 和 INT(11) UNSIGNED)。这可能表明它们是相同的?还是某种奇怪的错误?
在这里您可以看到创建表(直接来自 cli,以前没有客户端可以确定不是客户端错误):
Database changed
mysql> show create table faq;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| faq | CREATE TABLE `faq` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`section_id` int(11) NOT NULL,
`question` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
`url_string` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`answer` text COLLATE utf8_bin NOT NULL,
`date_created` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `section_id` (`section_id`)
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> show create table faq_questions_tags;
+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| faq_questions_tags | CREATE TABLE `faq_questions_tags` (
`id_faq` int(10) unsigned NOT NULL,
`id_tag` int(10) unsigned NOT NULL,
PRIMARY KEY (`id_faq`,`id_tag`),
KEY `faq_tags_tags_id_fk` (`id_tag`),
CONSTRAINT `faq_tags_faq_id_fk` FOREIGN KEY (`id_faq`) REFERENCES `faq` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `faq_tags_tags_id_fk` FOREIGN KEY (`id_tag`) REFERENCES `faq_tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
正如您所看到的 faq_questions_tags.id_faq 引用 faq.id,即使它们具有不同的定义,也不会报告错误/警告。这怎么可能?理论认为它不应该。
解决方案
推荐阅读
- spss - 如何从问卷中计算潜在变量?
- asp.net-mvc - 尽管使用 jquery.validate.unobtrusive 为可选字段弹出 data-val-regex 错误,但提交表单
- codec - Freeswitch 是否播放 .AMR 文件?
- php - 如何修改 Laravel 模型集合?
- python - python - 如何通过输入将字符串单独转换为使用Python的数组?
- node.js - 在没有 Nest 特定包的 NEST JS 中使用 NPM 包
- django - 如何在 Django-Oscar 中跳过预览页面(步骤 4)并将用户重定向到感谢页面(步骤 5)
- java - 如何使用 Java Spring Boot JPA 进行关系多对多
- angular - Bootstrap Modal中的Angular DataTable,dtElement未定义
- spring - 带有 Spring Boot 的端点特定 TLS MA