PHP:用PHP锁定所有MySQL表

时间:2010-12-20 12:11:14

标签: php mysql

如何在PHP中查看MySQL数据库中的所有表?

我确定必须有办法,但似乎无法找到任何PHP函数来完成这项工作。

寻找类似的东西

lock_all_mysql_tables();
//.... calling some external functions which require db lock
unlock_all_mysql_tables();

2 个答案:

答案 0 :(得分:1)

有一种更简单的方法来锁定所有表,但它需要“滥用”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");

此处有更多信息:http://dev.mysql.com/doc/refman/5.0/en/flush.html

答案 1 :(得分:0)

我不确定是否有绝对的方式来做你需要的但是你可以在数据库中得到一个表的列表......

MySQL的:

SHOW tables

...然后在结果上运行foreach循环以锁定/解锁每个表。