mysql按数据库中的外键依赖关系排序表名

时间:2016-07-19 14:01:14

标签: php mysql database

我需要查找按外键约束排序的一个数据库的所有表。实际上我正在将一个数据库表复制到其他数据库。所以我通过

获取了一个数据库的所有表
 SHOW TABLES FROM mydatabase

然后遍历此数据库的结果并在其他数据库中创建/插入表/记录。如果没有外键约束,这可以正常工作。但是如果存在外键约束,则它会生成mysql 150 error。就像上面的查询已经按照以下顺序返回表格一样

Array
(
    [0] => Alerts
    [1] => CompanyGroup
    [2] => company
)

现在按此顺序如果CompanyGroupcompany表有外键约束,那么我的下面的foreach循环

 foreach($tables as $table) {
     $tableinfo = mysqli_fetch_array(mysqli_query($dbConnection1, "SHOW CREATE TABLE $table"));
    mysqli_query($dbConnection2, " $tableinfo[1] ")
 }

将在第二次迭代中抛出错误,而在创建CompanyGroup表时,它将引用不在数据库中退出的company表。

所以我想知道如何对具有外键依赖性的表进行排序。我实际上想得到像

这样的输出
Array
(
    [0] => Alerts
    [1] => company
    [2] => CompanyGroup
)

这是一般脚本,所以我不能放手动条件。此脚本应在任何数据库上运行。数据库可以有200到400个表,有数百万条记录。请指导。

0 个答案:

没有答案