MySQL报错:mysql报错1558-Column count of mysql.proc is wrong.Expected 21,found 20.Created with MariaDB 50

文章讲述了在使用Navicat备份数据库时遇到的错误1558,该错误源于MySQL升级至MariaDB后存储过程未更新。解决方案包括备份数据,执行mariadb-upgrade命令,删除并重新创建mysql.proc表,以及更新存储过程。强调了升级过程中的数据安全和备份的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Navicat中备份线上数据库和本地数据库的数据结构的时候,报以下错误:
mysql报错1558-Column count of mysql.proc is wrong.Expected 21,found 20.Created with MariaDB 50568,now running 100806.Please use mariadb -upgrade to fix this error

解释:

这个错误提示是在使用MySQL升级为MariaDB的过程中出现的,建议按照以下步骤进行操作:
1、在升级之前,先备份好数据库和相关的配置文件。
2、安装MariaDB,并确保版本号高于MySQL的版本号。
3、停止MySQL和MariaDB的服务。
4、执行命令:mariadb-upgrade
5、启动MariaDB服务。
6、验证MariaDB是否能够正常工作,以及数据库和表是否都可以访问。
如果在执行mariadb-upgrade命令时,出现了其他错误,可以根据错误提示进行调整。在升级过程中,需要特别注意备份数据和配置文件,以防止出现不可逆转的错误。

具体操作步骤:

这个错误是因为升级了MariaDB,但是MySQL的存储过程没有更新导致的。可以使用下面的步骤来解决:

1、以往万一先备份数据库表

(1)查看自己的数据库信息

1)如果不清楚自己的数据库有哪些可以先查看一下

#在cmd里直接输入一下代码
C:\Users\Lizzy>mysql -u root -p
#回车后在下方输入密码
Enter password:
#查看一下自己的数据库
mysql>show databases;
#回车显示如下
+--------------------+
| Database           |
+--------------------+
| aone               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
#关闭数据库
mysql> exit

经过查询知道要备份的数据库名称是aone,接下来进行备份操作

(2)可以整个数据进行备份

输入以下语句进行整个数据库的备份,会有点慢

C:\Users\Lizzy>mysql -uroot -p aone > D:/aone_bak.sql
Enter password: *******
(2)也可以单个表进行备份

1)打开cmd命令行工具,进入mysql的安装路径下的bin目录,例如:

C:\Program Files\MySQL\MySQL Server 8.0\bin

2)输入以下命令,使用mysqldump工具备份数据库中的对应表,比如:

mysqldump -u username -p -t mysql proc > mysql.proc.sql

其中,-u参数指定MySQL的用户名,-p参数表示需要输入密码,-t参数表示不导出数据表的创建语句,而是只导出数据。
3)输入MySQL的密码后,执行上述命令,将mysql.proc表备份到mysql.proc.sql文件中。
我们备份的操作到这里就可以备份好mysql.proc表了,如果想恢复的时候,可以执行以下语句

mysql -u username -p mysql < mysql.proc.sql

其中,-u参数指定MySQL的用户名,-p参数表示需要输入密码,mysql.proc.sql表示备份文件的名称。执行上述命令即可将备份的mysql.proc表数据恢复到MySQL数据库中。
注意:备份和恢复mysql.proc表需要具有MySQL数据库的管理员权限。

2、接下来我们删除原始表再重新创建一遍

1)进入mysql数据库:

mysql -u root -p

2)删除mysql.proc表:

DROP TABLE mysql.proc;

3)从备份的文件中重新创建mysql.proc表:

SOURCE /tmp/proc.sql;

4)执行以下命令更新存储过程:

mysql_upgrade -u root -p

5)重启MySQL服务:

service mysql restart

重要:mysql_upgrade请谨慎!一定要做好备份,做好备份,做好备份!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值