Phpmyadmin 版本 4:关系视图有时不显示外键约束

Posted

技术标签:

【中文标题】Phpmyadmin 版本 4:关系视图有时不显示外键约束【英文标题】:Phpmyadmin version 4: Relation view sometimes does not show foreign key constraints 【发布时间】:2014-10-26 07:10:41 【问题描述】:

我有一个不久前建立的数据库。数据库中的每个表都是 InnoDb。有几个表有外键约束,我将它们设置为On Delete = Cascade。当我使用早期版本的 phpmyadmin 时,使用这些很简单:我只需转到表的结构选项卡,单击关系视图链接,只要我在正确的列上设置了正确的索引,我可以根据需要设置外键。

自从升级到第 4 版后,它就变成了一场噩梦。对于某些表,我转到关系视图,一切都很好。但对于其他人——即使他们已经设置了外键约束——我看不到任何与他们合作的选项。

更糟糕的是,我什至尝试删除索引并重新添加它们,却得到以下错误:Cannot drop index [index_name]: needed in a foreign key constraint. 所以除非我弄错了,否则约束是存在的,但 phpmyadmin 拒绝给我看看。

我需要做些什么才能让它们再次出现吗?至少可以说这非常令人沮丧:以前运行良好的东西现在不归功于升级。

【问题讨论】:

我刚刚检查了 information_schema 表中的表 KEY_COLUMN_USAGE。它确认存在外键约束。我想改变这一点,但同样,phpmyadmin 不会向我显示约束。这真的让我想降级到旧版本... 【参考方案1】:

好的,在玩了几张桌子之后,我弄清楚了发生了什么。唯一不显示外键约束选项的情况是表名包含大写字母。至少可以说非常令人沮丧。

【讨论】:

在过去的几周里,这一直是我极度沮丧的根源。我希望谷歌很久以前就引导我解决这个问题,而不是在 phpmyadmin 中启用其他更标准的问题。 是的,我最终回去并将所有驼峰式表格更改为下划线名称。 不可能!太令人沮丧了,我们一直在寻找这样一个微小的细节。最糟糕的是 phpmyadmin 什么也没说! 我认为更糟糕的是它不符合允许的表名。他们有一个类似的错误,如果你使用大写的表名,就会不断弹出不同的错误,他们修复了这个问题,但显然不是其他错误。在修复所有这些大写触发的错误之前,我不得不回滚到旧的 phpMyAdmin。 哇,我以为我快疯了,但事实证明这是修复程序,请注意,我在将近一年后发布此问题,但此错误仍然存​​在。【参考方案2】:

我刚刚为 phpmyadmin 提交了错误报告:https://github.com/phpmyadmin/phpmyadmin/issues/11461

这应该很容易解决。

【讨论】:

谢谢你。我想一旦这个问题得到解决,很多人都会非常高兴。【参考方案3】:

发生在我身上是因为我在数据库名称中使用了“&”。

【讨论】:

【参考方案4】:

在我的情况下,我使用两列(A 和 B)作为其他表的外键然后我还使用了复合唯一的([A,B]),phpMyAdmin 不显示现有的外索引A列但确实显示了B列。 我的系统版本如下: 服务器版本:5.7.30 - mysql 社区服务器 (GPL)

【讨论】:

以上是关于Phpmyadmin 版本 4:关系视图有时不显示外键约束的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin 关系视图不可用

phpmyadmin 选择字段以在关系视图中显示缺失

如何在 MAMP 中使用 phpMyAdmin 在 MySQL 中显示关系视图

在 phpmyadmin 中启用关系视图的问题

关系视图在 wampserver 2.5 上不可用 phpMyAdmin

如何在 phpmyadmin 中将“关系显示列”设置为默认值