灵当CRM

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

转储sql文件运行后,触发器丢失怎么办

[复制链接]

1662

主题

1711

帖子

5万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
59960
发表于 2018-4-17 13:50:11 | 显示全部楼层 |阅读模式
转储sql文件运行后,触发器丢失怎么办?


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


答:转储SQL文件的时候,系统生成的存储过程、触发器脚本中会自动添加定义存储过程和触发器对应的用户信息(使用Navicat连接用户)

       如果转储后新的数据库实例下没有对应的用户名和的密码,会导致所有存储过程和触发器都不能使用。

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


特别说明:如客户有个性化触发器,请提前备份好数据库和个性化触发器!

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

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

操作步骤:

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

1

1


2)CTRL+F,查找 DROP VIEW IF EXISTS `vw_oa_attendance`; ,删除上面所有的脚本文件。

2

2


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

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

3

3

4

4


      ■ 查找并全部替换 DEFINER=`root`@`localhost`  为空

      ■ 查找并全部替换 DEFINER=`51sql`@`%`  为空
      说明:51sql是数据库的用户名,要替换成你自己的数据库用户名

      ■ 查找 DEFINER= 确认,确认脚本没有对用户的定义


4)完成以上操作步骤后,新建查询—>复制粘贴存储过程脚本->点击运行


5

5




存储过程_V7.3.4.sql

379.8 KB, 下载次数: 635

存储过程

回复

使用道具 举报

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

本版积分规则

灵当CRM

GMT+8, 2024-4-30 04:13 , Processed in 0.053843 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2008-2022, Tencent Cloud.

沪ICP备08110973号-2

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