灵当CRM

 找回密码
 立即注册
查看: 3979|回复: 0

Navicat转储SQL,CRM升级,打开软件自动升级显示“执行脚本出错”

[复制链接]

1662

主题

1711

帖子

5万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
59862
 楼主| 发表于 2019-5-30 11:13:47 | 显示全部楼层 |阅读模式
升级故障:

Navicat转储SQL文件,导入新的数据库后,CRM升级至7.7.3,覆盖crm文件夹成功后,打开软件自动升级显示“执行脚本出错”,进度在2/271,错误详情见服务器桌面日志文档;手动升级执行脚本,执行第一个脚本7.6.8,即开始报错downloadnow,错误详情见服务器Navicat。


问题分析:Navicat转储SQL文件,导入新的数据库后,为什么还需要专门处理存储过程、触发器的用户密码?

转储SQL文件的时候,系统生成的存储过程、触发器脚本中会自动添加定义存储过程和触发器对应的用户信息(使用Navicat连接用户),如果转储后新的数据库实例下没有对应的用户名和的密码,会导致所有存储过程和触发器都不能使用。

PS:若转储的数据库和恢复的数据库在同一个数据库实例下,则不存在该问题



解决办法
1、新的数据库实例下添加同样的数据库用户名和密码(新建用户之后需要刷新数据库用户或者重启数据库);


2、去掉脚本中存储过程和触发器对用户名和密码的定义,在恢复的数据库下重新执行;

1) 用notepa++打开刚才转储的sql文件
1.png

2) CTRL+F,查找 INSERT INTO `tmp_taxformula` VALUES ,删除上面所有的脚本文件。

2.png

处理技巧:光标定位到下一行,然后拖动滚动条到最上面,按住SHIFT键,用鼠标点击第一行,然后按下DELETE 见删除所有选中的脚本,CTRL+S保存文件即可。


3) 查找余下脚本(储存过程、发器)对用户的定义,并全部替换为空。

3.png

a) 查找并全部替换 DEFINER=`root`@`localhost`  为空;
b) 查找并全部替换 DEFINER=`51sql`@`%`  为空;
说明:51sql是数据库的用户名,要替换成你自己的数据库用户名
c) 查找 DEFINER=  确认,确认脚本没有对用户的定义后,在恢复的数据库中执行;









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

灵当CRM

GMT+8, 2024-4-26 04:57 , Processed in 0.054290 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2008-2022, Tencent Cloud.

沪ICP备08110973号-2

快速回复 返回顶部 返回列表