【问题标题】:ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 48. The table is probably corruptedERROR 1805 (HY000): mysql.user 的列数错误。预期 45,发现 48。表可能已损坏
【发布时间】:2017-10-14 11:55:08
【问题描述】:

我的mysql有如下问题:

mysql> SELECT User FROM mysql.user;
+------+
| User |
+------+
| root |
| root |
|      |
| root |
|      |
| root |
+------+
6 rows in set (0.00 sec)

mysql> CREATE USER 'dummy'@'localhost';
ERROR 1805 (HY000): Column count of mysql.user is wrong. 
Expected 45, found 48. The table is probably corrupted

有人遇到过这个问题吗?谢谢

【问题讨论】:

标签: mysql


【解决方案1】:
mysql_upgrade -u root -p

然后重启数据库。

见:https://nixcp.com/error-1805-hy000-column-count-of-mysql-user-is-wrong/

博客写道:

ERROR 1805 (HY000): mysql.user 的列数错误。表是 可能损坏的错误可以通过运行一个简单的来修复 mysql_upgrade 命令。 mysql_upgrade 工具经常用于检查 mysql 表不兼容(崩溃或损坏的表)运行 当前的 MySQL 版本。也可以用来升级mysql表 如果需要的话。在这种情况下,我们将使用它来修复任何损坏的表。

【讨论】:

  • 由于答案不是很清楚,解释它的作用是重新定义 mysql.user 表,将现有用户移动到非活动状态并将旧用户复制到新的正确格式。
  • 链接也被破坏了,“建立数据库连接时出错” - 考虑到上下文很有趣:-)
  • 链接现已修复
【解决方案2】:

使用以下脚本:

alter table user drop column is_role;
alter table user drop column default_role;
alter table user drop column max_statement_time;
alter table user modify max_user_connections int(11) unsigned NOT NULL DEFAULT '0';
flush privileges;

信用: https://www.percona.com/forums/questions-discussions/mysql-and-percona-server/48583-column-count-of-mysql-user-is-wrong-expected-45-found-48

【讨论】:

  • 您的修复对我有用。我从 mysql 迁移到 percona 并产生了上述错误。
【解决方案3】:

对我来说,这个问题是在我从 PHP5 升级到 PHP7 之后发生的。我需要进入 PHP.ini (xampp/php/php.ini) 并取消注释以下行:

extension=mysqli

重启xampp,一切顺利!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 2020-07-22
    • 2019-10-31
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多