MySQL命令:
FLUSH TABLES;
刷新当前数据库中的每个表,还是刷新服务器上的每个表?
我正在使用MySQL 5.0 - documentation尚不清楚,尽管确实提到了:
FLUSH TABLES WITH READ LOCK;
将对所有数据库执行此操作。
感谢。
答案 0 :(得分:18)
这是所有数据库。
答案 1 :(得分:9)
我试着看一下,但我也找不到权威的答案。
FLUSH TABLES
上找到了MySQL Internals文档,但没有具体说明。mysql_server/sql/sql_base.cc
中阅读了源代码,但很快找不到答案。我认为答案是开发人员认为非常明显的事情之一,他们永远不需要说出来。
根据内部文档,MySQL表缓存包含最近使用的表的列表。没有提到特定于数据库的表缓存,MySQL服务器中似乎只有一个表缓存。
FLUSH TABLES
被描述为强制关闭所有打开的表(表缓存中的表)。没有提到这仅限于一个数据库,但您可以在FLUSH TABLES
的参数中指定单个表。同样,我认为这默认适用于整个表缓存,因此也适用于MySQL服务器上具有打开文件的所有数据库。
答案 2 :(得分:7)
当你只做一个mysql_connect然后“show tables”时 - > mysql_error():未选择数据库
使用“刷新表”没有mysql_error,所以我认为答案是 每个数据库
答案 3 :(得分:0)
FLUSH TABLES
已对所有数据库完成,除非您一一指定表。
语法是:
FLUSH TABLES tbl_name [, tbl_name] ...
与READ LOCK
:
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK
并包含数据库中的所有表,您可以获取查询SHOW TABLES
以显示所选数据库中的所有表。因此,进行一些编辑后,查询将如下所示:
FLUSH TABLES db_name.table_1,
db_name.table_2,
db_name.table_3,
...