2

我们有一个 MySQL 服务器,其中运行着多个数据库,用于不同类型的数据。其中之一是 wordpress 数据库。

我可以连接好,“显示数据库”和“使用苹果”,“使用橙子”等(用水果代替我们的实际数据库)但是当我“使用 wordpress”而不是“数据库更改”时,我得到

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

果然,如果我用一个额外的 -A 标志启动 mysql,一切似乎都可以工作。然后我可以“使用 wordpress”并查看数据。

如果我用 -A 启动它并执行“使用 wordpress”它会起作用,那么我会执行“rehash”并且它会挂起。

有人见过这个吗?我能做些什么呢?

4

1 回答 1

2

MySQL 命令行客户端提供数据库/表/列名称补全:也就是说,当您开始输入名称并按Tab时,名称完成。为此,客户端会构建一个数据库、表和列名称的哈希,当您调用完成时它会查询这些哈希。

如果命令行客户端在启用自动重新散列的情况下启动,它会在您连接到数据库时自动构建完成散列,并使其保持最新。对于大型数据库,这可能需要一些时间。使用--no-auto-rehash( ) 启动客户端时,不会构建散列,并且在您手动构建散列(使用或)-A之前无法完成。这减少了启动时间,尤其是对于大型数据库。rehash\#

因此,在大型数据库上散列需要相当长的时间是正常的。-A当您从启用自动重新散列开始时(即没有,或使用-Aand then rehash) ,这就是您似乎正在经历的事情。对于小型数据库(applesoranges您的示例中)它并不明显,但对于大型数据库(wordpress)它很慢。我使用的一些替代方案:

  • 不要重复
  • 在哈希建立时喝杯咖啡
  • 使用可以更快完成的不同客户端
于 2013-07-02T00:01:48.933 回答