无法使用 phpMyAdmin 在关系视图中设置关系

Cannot set relations in relation view with phpMyAdmin

我把我的table设置为InnoDB,可以进入关系视图。但我只能添加约束没有关系。是什么导致了问题?

服务器版本:5.7.14 - MySQL 社区服务器 (GPL)

phpMyAdmin 版本:4.6.4

Wamp服务器版本:3.0.6

这是我期望的视图图片,缺少 table "Internal relations":

问:"I only can add constraints no relations. What causes the problem?"

答:我没有看到任何有问题的行为被报告。

我看到了对您所采取步骤的描述,我猜这些步骤的结果不符合您的预期。

如果您能阐明您的期望,我们可能会提供帮助。


简要...

使用 InnoDB,两个 table 之间的“关系”可以通过创建 FOREIGN KEY 约束来表达和强制执行。


在关系数据库理论中,“关系”是一组元组。在 RDBMS 中,“relation”被实现为 TABLE.


如果有对您试图实现的目标的描述,以及对您观察到的问题行为的更准确描述,则可能会提供一些帮助。


编辑

有了InnoDB,我们可以使用数据库中定义的外键来表示table之间的关系。这些存储在 InnoDB table 定义中。

PHPMyAdmin "internal relations" 用于不支持外键的 MyISAM table。

验证 PHPMyAdmin 配置为存储 "internal relations"。它将配置存储在名为 pma__relation 的 table 中。实际的 table 名称在 PHPMyAdmin 的配置中指定。

https://docs.phpmyadmin.net/en/latest/config.html

如果启用该功能,配置文件中应该有这样一行:

$cfg['Servers'][$i]['relation'] = 'pma__relation';

(请参阅文档了解您 运行 的 PHPMyAdmin 版本。)

并确认 pma__relation table 存在于您的数据库中。

如果一切看起来都配置正确,那么我将使用几个使用 ENGINE=MYISAM 的测试 table 来测试该功能,看看它是否适用于那些 tables。

我不知道该功能是否应该适用于 tables 使用 MYISAM 以外的存储引擎。我不知道它是否适用于 ENGINE=INNODB tables.