使用mysql创建数据库并查询information_schema会导致结果为空

时间:2018-02-17 18:40:28

标签: php pdo mariadb

在数据库实用程序的测试用例中,我执行以下操作

  1. 使用mysql客户端工具
  2. 创建并填充测试数据库
  3. 查询information_schema.tables
  4. 在第二步中,我得到一个空的结果。

    在查询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。

1 个答案:

答案 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();');
相关问题