我需要查找按外键约束排序的一个数据库的所有表。实际上我正在将一个数据库表复制到其他数据库。所以我通过
获取了一个数据库的所有表 SHOW TABLES FROM mydatabase
然后遍历此数据库的结果并在其他数据库中创建/插入表/记录。如果没有外键约束,这可以正常工作。但是如果存在外键约束,则它会生成mysql 150 error
。就像上面的查询已经按照以下顺序返回表格一样
Array
(
[0] => Alerts
[1] => CompanyGroup
[2] => company
)
现在按此顺序如果CompanyGroup
对company
表有外键约束,那么我的下面的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个表,有数百万条记录。请指导。