如何在 PHP 中查看 MySQL 数据库中的所有表?
我确信一定有办法做到这一点,但似乎找不到任何 PHP 函数来完成这项工作。
正在寻找这样的东西
lock_all_mysql_tables();
//.... calling some external functions which require db lock
unlock_all_mysql_tables();
最佳答案
有一种更简单的方法可以锁定所有表,但它需要“滥用”FLUSH 命令来锁定所有表。刷新整个数据库意味着 MySQL 将重新加载其各种内部缓存,因此这可能不适用于大型表/数据库。
我只在 MyISAM 表上尝试过此操作,而且我听人们说这对于 InnoDB 表不能正常工作,所以如果您的表类型不是 MyISAM,请小心。
具体操作方法如下:
mysql_query("FLUSH TABLES WITH READ LOCK");
/* do stuff while entire database is locked */
mysql_query("UNLOCK TABLES");
如果您使用 MySQL 复制,您可以通过将第一个查询更改为:来避免将 FLUSH 命令同步到从服务器:
mysql_query("FLUSH LOCAL TABLES WITH READ LOCK");
关于PHP:在 PHP 中锁定所有 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489494/