无法将SQL文件导入phpMyAdmin,报错#1558寻求解决办法
导入SQL到phpMyAdmin时遇#1558错误,执行mysql_upgrade后仍无法解决
尝试将包含存储过程的SQL文件上传到phpMyAdmin时触发错误,详情如下:
错误信息
执行的SQL查询:
-- -- Procedures -- CREATE DEFINER=`root`@`localhost` PROCEDURE `Add Blood Inventory Record` () INSERT INTO `blood inventory`(`Donor Name`, `Donor ID`, `Donor Phone Number`, `Donor Gender`, `Concentration of Plasma`, `Hemoglobin`, `Blood Type`, `Blood Volume`, `Blood Pack ID`, `Storage Staff Name (IN)`, `Storage Staff ID (IN)`, `Storage Staff Name (OUT)`, `Storage Staff ID (OUT)`, `Entry Date`, `Expiry Date`, `Storage Location`, `Storage ID`, `Blood Pack Expired`, `Blood Pack Used`, `Blood Pack Usage Venue`, `Blood Pack Usage Case ID`) VALUES ('[value-1]','[value-2]','[value-3]','[value-4]','[value-5]','[value-6]','[value-7]','[value-8]','[value-9]','[value-10]','[value-11]','[value-12]','[value-13]','[value-14]','[value-15]','[value-16]','[value-17]','[value-18]','[value-19]','[value-20]','[value-21]');
MySQL返回提示:
#1558 - Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100424. Please use mysql_upgrade to fix this error
已尝试执行mysql_upgrade命令,但问题仍存在,无法成功导入SQL文件。
可行解决方法
确保mysql_upgrade完整执行
以管理员身份运行终端,执行完整升级命令:mysql_upgrade -u root -p输入root密码等待执行完成,之后重启MariaDB服务:
# Debian/Ubuntu系统 sudo systemctl restart mariadb # CentOS/RHEL系统 sudo systemctl restart mysqld手动修复mysql.proc表结构
先备份表避免数据丢失:CREATE TABLE mysql.proc_backup LIKE mysql.proc; INSERT INTO mysql.proc_backup SELECT * FROM mysql.proc;针对10.4.x版本执行结构更新:
ALTER TABLE mysql.proc ADD COLUMN sql_mode varchar(8192) NOT NULL DEFAULT '' AFTER comment;注:操作需root权限,务必先备份。
拆分SQL文件导入
暂时注释SQL文件中存储过程的创建代码,先导入表结构和数据:-- 注释原存储过程代码 -- CREATE DEFINER=`root`@`localhost` PROCEDURE `Add Blood Inventory Record` () -- INSERT INTO `blood inventory`(...) VALUES (...);导入完成后,在phpMyAdmin的SQL面板单独执行存储过程创建语句,检查语法是否适配当前版本。
适配版本重新导出
回到生成SQL的MariaDB 10.1.08环境,导出时选择"兼容更高版本"选项,再重新导出并导入到10.4.24环境中。
内容的提问来源于stack exchange,提问作者NirvashNEo
相关产品推荐
相关产品推荐

