【问题标题】:Determine InnoDB FK Constraints without information_schema确定没有 information_schema 的 InnoDB FK 约束
【发布时间】:2011-08-16 11:10:10
【问题描述】:

我正在编写一些代码来检查 MySQL 数据库结构,并且需要有关外键约束的信息(在 InnoDB 表上)。

我知道有两种方法可以做到这一点:

  1. 解析SHOW CREATE TABLE X的结果
  2. 使用INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS

不幸的是,选项 2 需要 MySQL 5.1.16 或更高版本,所以我不能使用它,除非/直到我可以说服我们的服务器人员进行更新,虽然我可能可以使用选项 1,但感觉很乱而且没有写一个完整的 SQL 解析器我不确定我的代码是否总是适用于任何表。

还有其他方法可以获取这些信息吗?

谢谢

【问题讨论】:

    标签: mysql foreign-keys innodb information-schema


    【解决方案1】:

    From the MySQL 5.0 manual online:

    您还可以显示表的外键约束,例如 这个:

    SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
    

    外键约束列在 Comment 列中 输出。


    海报表明这不提供ON UPDATEON DELETE 信息,这是外键行为的重要组成部分。

    另一种选择:

    由于您控制所涉及的代码,是否可以在 5.1+ 版本的同一环境中设置另一个 MySQL 实例?如果是这样,我们称该实例为 dummy。在实时数据库上运行SHOW CREATE TABLE。然后,在 dummy 上运行 DROP TABLE IF EXIST,然后运行 ​​SHOW CREATE TABLE 查询的输出。

    现在您可以在 dummy 数据库上使用INFORMATION_SCHEMA 来获取信息。

    【讨论】:

    • 谢谢,虽然这并没有给我ON UPDATE/ON DELETE 信息。
    • @DaedalusFall:好的。另一个选项怎么样...更新的答案。
    • 哈!不错的黑客!遗憾的是,我无法从我的代码(安全模式下的 php)启动 mysql 实例,而且我认为我们的服务器人员不会对我不断运行一个实例感到高兴。好东西。我想我只能等到升级了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多