设为首页收藏本站
搜索
查看: 692|回复: 0

[linux] mysql出现Column count of mysql.proc is wrong. Expected 20, found 16.解决方法

[复制链接]

6

主题

6

帖子

9

积分

新手上路

Rank: 1

论坛积分
9 个
发表于 2014-7-15 11:34:42 | 显示全部楼层 |阅读模式
1558 - Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50018, now running 50146. Please use mysql_upgrade to fix this error.
5 K% h: I  {' ~) p0 c今天服务器上出现了这个不起眼的错误。
; e. G/ N& o% Q+ \8 |其实这个错误如果用phpmyadmin的话发现不了、
: t" V  h: p6 V1 g& n5 R' z错误来源,是由于你曾经升级过数据库。
, j0 b5 E+ M  k- J  l. D; ?) `升级完后未使用mysql_upgrade升级数据结构造成的。# ^+ c( A/ D; @, k4 e/ k, z
用Navicat For MySQL会有此错误提示。3 Y; \0 b9 R3 V' p( _( U  J
记录一下解决方法。! ^& ]( c6 I8 H: S0 B7 u5 P
mysql.proc5 s! @$ p7 B- d! u
这个是5.1里面的系统表来的,用来记录存储过程或函数的信息.5 s: |  H, I* [  {
你的数据库肯定作过升级或用不同的版本进行备份迁移恢复.' o& `5 o' H5 {
解决办法:
7 |7 D, f( A* M, X使用命令:mysql_upgrade 就可以解决
7 z5 k* n: k- e' amysql_upgrade -u root -p123456 –datadir=D:\Database –basedir=D:\Mysql2 x9 a+ `% R) A. S! O
MySQL utility for upgrading databases to new MySQL versions.# ]8 X. c6 \  R! j
问题6 d/ g5 p1 E  C1 r/ C( P/ Y
+ s% n: P( P( q
重新开机后, 查看当机前发生的事情, 都是出现下述讯息:
' t$ g# h* l7 n" Y
: [4 S* X4 @- K) e$ sudo less /var/log/syslog
' ?' R; g9 B9 b  X5 T* t- V- YOct  8 20:15:13 example kernel: [5695418.376686] type=1505 audit(1286540113.390:48176):  operation="profile_replace" pid=26753 name="/usr/sbin/mysqld") K7 I: p: d5 {5 J% u) h
Oct  8 20:15:13 example /etc/mysql/debian-start[26767]: Upgrading MySQL tables if necessary.5 X/ I/ |% \7 r8 X9 |; [2 M
Oct  8 20:15:13 example /etc/mysql/debian-start[26770]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored, E4 S& I: |: o, H
Oct  8 20:15:13 example /etc/mysql/debian-start[26770]: Looking for 'mysql' as: /usr/bin/mysql2 J! I' f- f, c0 g# t
Oct  8 20:15:13 example /etc/mysql/debian-start[26770]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck9 {: `0 u; S" e! r; W
Oct  8 20:15:13 example /etc/mysql/debian-start[26770]: This installation of MySQL is already upgraded to 5.1.41 , use --force if you still need to run mysql_upgrade; Y1 f. W3 g# f( b, }
Oct  8 20:15:13 example /etc/mysql/debian-start[26777]: Checking for insecure root accounts.0 T# b. W4 }0 d& t# u+ @7 P. c, w
Oct  8 20:15:13 example /etc/mysql/debian-start[26781]: Triggering myisam-recover for all MyISAM tables; B" M( m' V- m0 X/ X: t
Oct  8 20:15:39 example init: mysql main process (26757) killed by KILL signal
& c6 W7 P" i3 q7 q% h# Y& H9 `1 E' U3 G) k2 b7 j( s$ {
- H) Y) f! A9 g$ r# q8 ^
解法
; {  p  P6 U" R( F' S% C) m6 m看来像是 MyISAM 的 Table 出问题, 但是, 检查起来都没任何异常, 先假设是升级 MySQL 造成的问题, 所以手动执行 mysql_upgrade 来完成升级动作.
* I& m/ N( @+ U2 i注: 下述指令于 MySQL upgrade 后, 都可以手动执行. (InnoDB 执行 mysql_upgrade 没有作用, MyISAM 会做检查、修复的动作)
0 X7 W# j+ N' B1 m. t# C$ sudo mysql_upgrade -u root -p # 若出现下述讯息, 则加上 –force
$ d0 \: d1 H* P, [( sThis installation of MySQL is already upgraded to 5.1.49, use –force if you still need to run mysql_upgrade
. m" p4 ?$ U( L+ R2 I+ t; ^$ sudo mysql_upgrade –force -u root -p# |( Q5 Z9 E! Z3 n
Looking for ‘mysql’ as: mysql
3 N7 F& U4 f% T4 H0 DLooking for ‘mysqlcheck’ as: mysqlcheck
5 m. b: k8 I5 a- g4 @6 F" VRunning ‘mysqlcheck’ with connection arguments: ‘–port=3306′ ‘–socket=/var/run/mysqld/mysqld.sock’
, I) M. b+ n7 A  ?, m) }Running ‘mysqlcheck’ with connection arguments: ‘–port=3306′ ‘–socket=/var/run/mysqld/mysqld.sock’: f% I5 Y) O6 L4 i; g; l
mysql.columns_priv                        OK. x3 W+ X" c* O9 X
mysql.db                                            OK* c. Q" N& E7 q4 ~. K5 I: j
mysql.event                                       OK
6 S. G; q9 m# w; Lmysql.func                                         OK1 V. w: s" ]& |6 d8 V7 t9 x" h
Running ‘mysql_fix_privilege_tables’…
) ^" z' Y$ T% Z/ S3 BOK  l+ T: f0 P# e  I' [% |: t4 c# J0 ~
$ sudo /etc/init.d/mysql restart # 重新启动 MySQL2 x0 `. W" E6 P4 j4 v
暂时做个纪录, 希望别再发生问题.
转载请注明来自晒图论坛!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Archiver|晒图论坛 ( 赣ICP备12007697号  

GMT+8, 2017-10-23 01:17 , Processed in 0.156250 second(s), 30 queries .

快速回复 返回顶部 返回列表