MySQL 在 "rehash"命令上永远挂起

标签 mysql hash autocomplete freeze

我们有一个 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 )。对于小型数据库(示例中的applesoranges)来说,它并不明显,但对于大型数据库(wordpress)来说,它很慢。我使用的一些替代方案:

  • 不要重复
  • 在构建哈希时喝杯咖啡
  • 使用其他可以更快完成的客户端

关于MySQL 在 "rehash"命令上永远挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822724/

相关文章:

mysql - 在 SQL 中创建外键被认为不兼容,不知道为什么

php - MySQL 数据库填充下拉框和 PHP 搜索

mysql - SQL获取特定用户类型的最后回复

Java和Hash算法比较文件

使用带有子查询和变量的 UNION ALL 的 MySQL 错误

java - 为什么会为相同的子字符串生成两个不同的哈希值,我该怎么做才能解决这个问题?

java - 具有自定义类型的 HashSet

vim - UltiSnips 和 YouCompleteMe

autocomplete - Google 的 Scribe 自动完成服务是否有 API?

使用 Zend Framework 进行 JQuery UI 自动完成