【问题标题】:MySQL: Error while adding foreign key to a table (no error code)MySQL:向表添加外键时出错(无错误代码)
【发布时间】:2013-04-13 21:49:17
【问题描述】:

我有两个表 - topicsarticles,我正在尝试向 articles.arTopic(普通索引)添加一个外键,它将引用 topics.topicId(A-I 主键)。

但是,当我尝试在 phpMyAdmin 中执行此操作时,我收到一个错误,但没有任何错误代码(它只是说“错误”)。两个表都是 InnoDB 并且它们目前是空的(当它们填充相同的结果时尝试过),两个列都是 int(11) 无符号的。 SHOW ENGINE INNODB STATUS 没有显示任何有用的信息,LATEST FOREIGN KEY ERROR 部分的记录与此问题无关。

我已经为此苦苦挣扎了两个小时,除非我明显遗漏了什么,否则我不知道可能出了什么问题。有人可以帮忙吗?

提前致谢。

为 SQL 编辑:

CREATE TABLE IF NOT EXISTS `articles` (
  `arId` int(11) NOT NULL AUTO_INCREMENT,
  `arText` longtext COLLATE utf8_czech_ci NOT NULL,
  `arTopic` int(255) unsigned DEFAULT NULL,
  PRIMARY KEY (`arId`),
  KEY `arTopic` (`arTopic`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ROW_FORMAT=COMPACT AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `topics` (
  `topicId` int(255) unsigned NOT NULL AUTO_INCREMENT,
  `topicName` text COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`topicId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;

【问题讨论】:

  • 你能告诉我们用于创建表的 SQL 吗?
  • 我会的,一旦我弄清楚如何使其格式正确......对不起,我是新手。
  • 嘿,你确定没有更多的错误吗?也许页面有问题并且错误消息被切断了?另外,您是否尝试过使用其他浏览器只是为了好玩?
  • 不幸的是,情况并非如此,我什至尝试将 MyAdmin 切换到另一种语言,以查看它是否不仅仅是未翻译的错误消息。顺便说一句,我现在已将我的 SQL 添加到问题中。
  • 我在这些语句中看不到外键声明。进一步,当您尝试使用外键实现它们时,系统会报告什么?

标签: mysql phpmyadmin foreign-keys


【解决方案1】:

两列之间实际上存在差异 - 一列是not null,另一列是Default null。差异会给你一个错误。

【讨论】:

  • 我在这些值上玩了一会儿,没有任何区别 - 无论它们不是 null 还是 null,最终都会出错。
  • @Štriky 从两张表重新开始,让它们保持空白并保持简单。继续添加nullnot null 等属性,直到出现错误。
  • 呃,我是个笨蛋……我在那个桌子上有另一个外键,当我删除它时,我可以添加新的。之后我把旧的放回去了,它也起作用了。对不起,浪费你们的时间,伙计们。埃文,非常感谢您的帮助 - 接受您的回答,因为它确实让我再次查看代码并帮助我修复它。
猜你喜欢
  • 2014-10-10
  • 2018-05-13
  • 2015-05-27
  • 2017-09-18
  • 2014-10-22
  • 2016-06-04
  • 1970-01-01
  • 2014-12-16
  • 2017-09-01
相关资源
最近更新 更多