我们有一个 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 启动它并执行“use wordpress”,它会起作用,然后我执行“rehash”,它会挂起。
有人看过这个吗?我能做什么呢?
最佳答案
MySQL 命令行客户端提供数据库/表/列名称补全:也就是说,当您开始键入名称并按 Tab 时,名称就会补全。为此,客户端会构建数据库、表和列名称的哈希值,并在您调用完成时查询该哈希值。
如果命令行客户端以 auto-rehashing 启动启用后,当您连接到数据库时,它会自动构建完成哈希,并使其保持最新。对于大型数据库,这可能需要一些时间。使用 --no-auto-rehash
(-A
) 启动客户端时,不会构建哈希,并且在您手动构建哈希(使用rehash
或 \#
)。这会减少启动时间,特别是对于大型数据库。
因此,在大型数据库上散列需要相当长的时间是正常的。这就是当您开始启用自动重新哈希时您似乎遇到的情况(即没有 -A
或使用 -A
然后rehash
)。对于小型数据库(示例中的apples
和oranges
)来说,它并不明显,但对于大型数据库(wordpress
)来说,它很慢。我使用的一些替代方案:
- 不要重复
- 在构建哈希时喝杯咖啡
- 使用其他可以更快完成的客户端
关于MySQL 在 "rehash"命令上永远挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822724/