请输入
菜单

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

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



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


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

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

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


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

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

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

操作步骤:

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



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



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

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

 


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

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

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


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


存储过程_V7.3.4.sql

最近修改: 2025-01-15