PHP:在 PHP 中锁定所有 MySQL 表

标签 php mysql

如何在 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");

更多信息请点击:http://dev.mysql.com/doc/refman/5.0/en/flush.html

关于PHP:在 PHP 中锁定所有 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489494/

相关文章:

php - PHP 的 foreach 幕后发生了什么?

php - Magento 选择查询未使用 foreach 循环正确循环

MySQL 错误 1215 : Can not add foreign key constraint

php - 在php中重复数组日期

mysql - "ORDER BY FIELD"错误

java - 如何从 PHP 调用 jar 文件?

php - 如何使用 PDO 在 PHP 中获取结果数组?

php - 根据 where 子句选择行时,如何匹配完整的单词?

mysql - 如何使用命令提示符检查 mysql 中每个数据库/表使用的内存?

mysql - 我可以将这两个 SQL 查询合并为一个吗?