在数据库实用程序的测试用例中,我执行以下操作
在第二步中,我得到一个空的结果。
在查询information_schema之前,我已尝试在导入期间使用FLUSH TABLES以及ANALYZE表。
我使用随机数据库名称运行它。
这里发生了什么?
当我执行相同的查询时 -
SELECT table_name FROM information_schema.tables WHERE table_schema = database();
使用命令行,我得到了正确的结果。
虽然我相信以上信息足以重现该问题,但供参考,完整代码在github上:
https://github.com/iMi-digital/database-helper/commit/9562a25167d154e2ac758c071de8f4a281ae7073
失败的测试是\ IMI \ DatabaseHelper \ MysqlTest :: getTables。
答案 0 :(得分:0)
构建MCVE时,我找到了解决方案:
<?php
$dsn = 'mysql:host=127.0.0.1';
$dbh = new PDO($dsn, 'root', 'root');
$sth = $dbh->query("DROP DATABASE IF EXISTS stackoverflow");
$sth = $dbh->query("CREATE DATABASE stackoverflow");
exec('echo "CREATE TABLE foo ( bar INT); FLUSH TABLES; " | mysql -uroot -proot -h 127.0.0.1 stackoverflow');
$sth = $dbh->query("USE stackoverflow"); // that was missing
$result = $dbh->query('SELECT table_name FROM information_schema.tables WHERE table_schema = database();');