设为首页 - 加入收藏 - 网站地图 欢迎加QQ群 :14364084
当前位置:谭博的博客 > bugs > 正文

mysql创建存储过程时,提示mysql.proc错误,要求使用mysql_upgrade来修复

时间:2013-03-03 18:40 来源: 标签:存储过程 mysql升级 mysql_upgrade mysql.proc mysql proc修复 作者:谭博 阅读:

bug描述:

 

通过mysql客户端执行编写好的存储过程时,创建失败。出现如下错误提示,

 

ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16.

Created with MySQL 50020, now running 50524. Please use mysql_upgrade to fix thi

s error.

 

mysql.proc表的列数应该是20,当前只有16列,缺少4列,请通过mysql_upgrade来修复

 

原因分析

 

Mysql客户端是使用的5.5的,mysql数据库文件是直接使用的旧版本的mysql数据库文件,因此mysql.proc表中缺少四列,导致错误。

 

解决方案:

 

1(win下某些集成环境可能没有这两个文件,linux忽略) : 如果你的  (mysql安装目录in)  目录下没有   mysql_upgrade.exe和mysqlcheck.exe两个文件,请通过如下方式获取并复制到目录下:

 

a.请先从mysql官网下载安装相同版本mysql,然后从bin目录中获取这两个文件.(多个mysql冲突问题请自行百度解决)。

 

b.让朋友发给你。

 

2(win下):

 

先启动mysql;

 

开始->运行->输入cmd回车,在操作提示符下输入

 

mysql安装目录inmysql_upgrade -u root -p

 

(输入你的密码) 然后回车,待运行完之后关闭DOS窗口。

 

(linux 下):

 

使用root权限登陆,在终端执行

 

service mysqld restart    (要先启动mysql才能执行升级,不知道你是否已经启动mysql ,所以直接restart了)

 

mysql_upgrade -u root -p

 

即可

 

3如果执行完成之后末行出现 ok ,恭喜你升级成功。

 

如果失败,有两种解决方案:

 

a.暂时移出mysqldata文件中除 mysql以外的文件夹,然后再次尝试第二步

 

b.一般a就可以解决问题了,只不过b是问题的本质

 

执行如下sql语句即可

 

ALTER TABLE mysql.proc

ADD `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,

ADD `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,

ADD `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,

ADD `body_utf8` longblob

 

 

 

 

关注微信公众号

微信扫一扫,打赏我

热评文章
    内容不错,支持一下
    评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
    • 游客
      2013-04-11 15:17:24发表

      .............