数据库选择错误

数据库选择错误

数据库选择错误是我的问题,当我重新启动 mysql 来修复此错误时,这个问题解决了,但是 30 分钟后或几小时后,这个错误再次出现。

我把 ssh [putty] 的错误截图放在了这里,我该怎么办?什么原因导致这种情况发生?

tail -f /var/log/mysqld.log
120813 17:33:57 InnoDB: Completed initialization of buffer pool
120813 17:33:57 InnoDB: highest supported file format is Barracuda.
120813 17:33:57  InnoDB: Waiting for the background threads to start
120813 17:33:58 InnoDB: 1.1.8 started; log sequence number 63473783633
120813 17:33:58 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. Created with MySQL 50092, now running 50516. Please use mysql_upgrade to fix this error.
120813 17:33:58 [ERROR] mysql.user has no `Event_priv` column at position 29
120813 17:33:58 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.
120813 17:33:58 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.16'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL) by Remi

答案1

  1. 重新安装你的mysql,但不建议使用mysql_upgrade
  2. 检查 mysql db 中的用户表,似乎缺少列或行
  3. 修复损坏的数据库使用mysqlcheck -rA -u 根 -p

答案2

运行mysqlcheck,查看此处——http://scottlinux.com/2012/06/09/use-mysqlcheck-to-optimize-and-repair-mysql-databases/

另外,检查您的 RAM/磁盘是否没有问题。此外,升级到您正在运行的 MySQL 的最新版本。

答案3

如果你最近升级了 mysql,你可能会缺少系统表中的某些列,或者某些东西没有正确升级。看看mysql_upgrade. 早期版本的 mysql,您必须使用mysql_fix_privilege_tables。我相信它在 5.5 中被删除了。

在对数据库进行任何操作之前,不要忘记备份数据库。

相关内容