前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL新建存储过程出现:ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16. Create

MySQL新建存储过程出现:ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16. Create

作者头像
恋喵大鲤鱼
发布2018-08-03 14:38:53
5510
发布2018-08-03 14:38:53
举报
文章被收录于专栏:C/C++基础C/C++基础

我在MySQL版本:Ver 14.14 Distrib 5.1.61上创建存储过程是没有问题的,但是在版本:Ver 14.12 Distrib 5.0.26上面创建存储过程的时候就出现了上面的错误。甚至使用show procedure status 查看存储过程都会报上面的错误。

错误原因: 是由于你曾经升级过MySQL,或用不同的MySQL版本进行备份迁移恢复。升级和迁移完后未使用mysql_upgrade升级数据结构造成的。

mysql.proc: 是MySQL的系统表,用来记录存储过程或函数的信息。使用desc mysql.proc 查看上面不同版本的MySQL的mysql.proc,果然出错的MySQL的mysql.proc只有16列。

解决办法: 使用命令:mysql_upgrade -u[username] -p[password]就可以解决。

查找MySQL的安装目录找到mysql_upgrade : mysql_upgrade在MySQL的安装目录的bin中。可以使用如下命令查找MySQL的安装目录:ps -ef|grep -w mysql,我获取的结果如下:

代码语言:javascript
复制
/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/Tencent_IM.err --pid-file=/usr/local/mysql/data/Tencent_IM.pid --socket=/tmp/mysql.sock --port=3306

/usr/local/mysql 是指:mysql的安装路径。 /usr/local/mysql/bin 是指:mysql的运行程序存放路径,其中就包括 mysql_upgrade。 /usr/local/mysql/data 是指:mysql数据库文件的存放路径。

注意事项: 使用mysql_upgrade 对数据库的数据表结构等升级时,数据库引擎MyISAM 会做检查、修复的动作,InnoDB 执行 mysql_upgrade 没有作用。


参考文献

[1]Column count of mysql.proc is wrong. Expected 20, found 16

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文献
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档