在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请谨慎!一定要做好备份,做好备份,做好备份!