数据库选择错误是我的问题,当我重新启动 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
- 重新安装你的mysql,但不建议使用mysql_upgrade
- 检查 mysql db 中的用户表,似乎缺少列或行
- 修复损坏的数据库使用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 中被删除了。
在对数据库进行任何操作之前,不要忘记备份数据库。