我有一个我建立的数据库。数据库中的每个表都是InnoDb。有几个表有外键约束,我将它们设置为On Delete = Cascade
。当我使用早期版本的phpmyadmin时,使用它们很简单:我只是转到表的Structure选项卡,单击Relation View链接,只要我在上面设置了正确的索引。正确的列,我可以设置我认为合适的外键。
升级到版本4后,它变成了一场噩梦。对于某些表,我转到关系视图,一切都很好。但对于其他人 - 即使他们已经设置了外键约束 - 我也看不到与他们合作的任何选择。
更糟糕的是,我甚至尝试删除索引并重新添加它们,只是给出了以下错误:Cannot drop index [index_name]: needed in a foreign key constraint.
所以除非我弄错了,否则约束就在那里,但phpmyadmin拒绝向我展示。
我有什么必须做才能让它们再次出现吗?至少可以说这是非常令人沮丧的:现在之前工作正常的东西并不能归功于升级。
答案 0 :(得分:15)
好的,在玩了一下桌子之后,我想出了发生了什么。外键约束选项不会显示的唯一时间是表名包含大写字母。至少可以说非常令人沮丧。
答案 1 :(得分:1)
我刚刚为phpmyadmin提交了一份错误报告:https://github.com/phpmyadmin/phpmyadmin/issues/11461
这应该是一个简单的解决方案。
答案 2 :(得分:0)
发生这种情况是因为我在数据库名称中使用了“&”。
答案 3 :(得分:0)
在我的例子中,我使用了两列(A 和 B)作为其他表的外键,然后我还使用了([A,B])的复合唯一键,phpMyAdmin 不显示现有的外键A 列但确实显示了 B 列。 我的系统版本如下: 服务器版本:5.7.30 - MySQL 社区服务器 (GPL)