我们有一个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”它可以工作,那么我会“重新”并且它会挂起。
有人见过这个吗?我能做些什么呢?
答案 0 :(得分:2)
MySQL命令行客户端提供数据库/表/列名称完成:即,当您开始键入名称并按 Tab 时,名称已完成。为此,客户端会构建一个在调用完成时查询的数据库,表和列名称的哈希值。
如果命令行客户端在启用auto-rehashing的情况下启动,它会在您连接到数据库时自动构建完成哈希,并使其保持最新状态。对于大型数据库,这可能需要一些时间。使用--no-auto-rehash
(-A
)启动客户端时,不会构建散列,并且在手动构建散列(使用rehash
或\#
)之前无法完成。这减少了启动时间,特别是对于大型数据库。
因此,散列在大型数据库上花费很长时间是正常的。当您开始启用自动重新哈希时(即没有-A
,或者-A
然后rehash
),这就是您似乎遇到的情况。对于小型数据库(在您的示例中为apples
和oranges
),它并不明显,但对于较大的数据库(wordpress
),它很慢。我使用的一些替代方案: