【问题标题】:Phpmyadmin version 4: Relation view sometimes does not show foreign key constraintsPhpmyadmin 版本 4:关系视图有时不显示外键约束
【发布时间】: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 不会向我显示约束。这真的让我想降级到旧版本...

标签: mysql database phpmyadmin foreign-keys


【解决方案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)

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2017-03-11
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多