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

Mysql Phpmyadmin版本4:关系视图有时不显示外键约束,mysql,database,phpmyadmin,foreign-keys,Mysql,Database,Phpmyadmin,Foreign Keys,我有一个不久前建立的数据库。数据库中的每个表都是InnoDb。有几个表有外键约束,我将它们设置为Delete=Cascade上的。当我使用早期版本的phpmyadmin时,使用它们很简单:我只需转到表的“结构”选项卡,单击“关系视图”链接,只要在正确的列上设置了正确的索引,就可以根据需要设置外键 自从升级到版本4后,这就成了一场噩梦。对于一些表,我转到关系视图,一切都很好。但对于其他人——即使他们已经设置了外键约束——我看不到任何使用它们的选项 更糟糕的是,我甚至尝试删除索引并重新添加它们,结果

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

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

更糟糕的是,我甚至尝试删除索引并重新添加它们,结果却出现了以下错误:
无法删除外键约束中所需的索引[index\u name]。
因此,除非我弄错了,否则约束存在,但phpmyadmin拒绝向我显示它


我必须做些什么才能让他们再次出现?至少可以这么说,这是非常令人沮丧的:以前工作得很好的东西现在不需要升级。

好的,在玩了一会儿桌子之后,我知道发生了什么。外键约束选项只有在表名包含大写字母时才会显示。至少可以说非常令人沮丧。

我刚刚为phpmyadmin提交了一份错误报告:


这应该是一个容易解决的问题

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

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

我刚刚检查了信息架构表中的表键\u列\u用法。它确认存在外键约束。我想更改此项,但phpmyadmin不会再次向我显示约束。这确实让我想降级到旧版本……这在过去几周一直是我非常沮丧的原因。我想sh google很久以前就让我想到了这一点,而不是在phpmyadmin中启用问题的其他更标准的问题。是的,我回到过去,把所有的驼峰式表格改为下划线。不可能!我们在寻找如此微小的细节时失去了所有时间,这让人非常沮丧。最糟糕的是phpmyadmin没有提到它!我认为更糟糕的是它不符合允许的表名。他们有一个类似的错误,如果你使用大写的表名,会不断出现不同的错误,他们修复了这个错误,但显然不是其他错误。我不得不回滚到一个旧的phpMyAdmin,直到所有这些大写触发的错误都修复。哇,我以为我疯了,但它变成了o但这是修复方法,请注意,我在将近一年后发布了这篇文章,这个bug仍然存在。谢谢你。我想,一旦这个问题得到解决,很多人都会非常高兴的。