English 中文(简体)
MySQL刷新表-当前数据库还是每个数据库?
原标题:
  • 时间:2008-12-03 12:21:40
  •  标签:

请将此翻译成中文:MySQL命令:

FLUSH TABLES;

清空当前数据库中的所有表,还是服务器中的每个表?

我正在使用MySQL 5.0 - 文档不清楚,尽管它提到:

FLUSH TABLES WITH READ LOCK;

将为所有数据库执行此操作。

谢谢。

最佳回答

这都是数据库。

问题回答

我尝试查找这个问题,但我也无法找到权威答案。

  • I looked in the manual, as you did.
  • I found the MySQL Internals documentation on FLUSH TABLES, but it doesn t say specifically.
  • I even read the source code in mysql_server/sql/sql_base.cc but couldn t find the answer quickly.

我认为答案是开发人员认为非常明显,因此他们永远不需要说它的那些事情之一。

根据内部文档,MySQL表缓存保存了最近使用的表的列表。没有提到特定于数据库的表缓存,似乎在MySQL服务器中只有一个表缓存。

“FLUSH TABLES” 被描述为强制关闭所有已打开的表(在表缓存中的表)。没有提到此操作仅限于一个数据库,但您可以在参数中指定单个表来执行“FLUSH TABLES”。因此,默认情况下,我假设此操作适用于整个表缓存,因此适用于MySQL服务器上所有具有打开文件的数据库。

when you do just a mysql_connect and then "show tables" for example -> mysql_error(): No Database selected

with "flush tables" there is no mysql_error, so i think the answer is every database

除非你逐个指定表格,否则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,
             ...




相关问题
热门标签