升级故障:
Navicat转储SQL文件,导入新的数据库后,CRM升级至7.7.3,覆盖crm文件夹成功后,打开软件自动升级显示“执行脚本出错”,进度在2/271,错误详情见服务器桌面日志文档;手动升级执行脚本,执行第一个脚本7.6.8,即开始报错downloadnow,错误详情见服务器Navicat。
问题分析:Navicat转储SQL文件,导入新的数据库后,为什么还需要专门处理存储过程、触发器的用户密码?
转储SQL文件的时候,系统生成的存储过程、触发器脚本中会自动添加定义存储过程和触发器对应的用户信息(使用Navicat连接用户),如果转储后新的数据库实例下没有对应的用户名和的密码,会导致所有存储过程和触发器都不能使用。
PS:若转储的数据库和恢复的数据库在同一个数据库实例下,则不存在该问题
解决办法:
1、新的数据库实例下添加同样的数据库用户名和密码(新建用户之后需要刷新数据库用户或者重启数据库);
2、去掉脚本中存储过程和触发器对用户名和密码的定义,在恢复的数据库下重新执行;
1) 用notepa++打开刚才转储的sql文件
2) CTRL+F,查找 INSERT INTO `tmp_taxformula` VALUES ,删除上面所有的脚本文件。
处理技巧:光标定位到下一行,然后拖动滚动条到最上面,按住SHIFT键,用鼠标点击第一行,然后按下DELETE 见删除所有选中的脚本,CTRL+S保存文件即可。
3) 查找余下脚本(储存过程、发器)对用户的定义,并全部替换为空。
a) 查找并全部替换 DEFINER=`root`@`localhost` 为空;
b) 查找并全部替换 DEFINER=`51sql`@`%` 为空;
说明:51sql是数据库的用户名,要替换成你自己的数据库用户名
c) 查找 DEFINER= 确认,确认脚本没有对用户的定义后,在恢复的数据库中执行;