当前位置: 首页 > 面试题库 >

从MySQL转储中删除DEFINER子句

蒋鹏鹍
2023-03-14
问题内容

我有一个数据库的MySQL转储。其中包含DEFINER子句,

"DEFINER=`root`@`localhost`"

即,这些DEFINER子句位于我的CREATE VIEW和CREATE PROCEDURE语句中。有没有办法从我的转储文件中删除这些DEFINER子句?


问题答案:

我认为没有办法忽略将DEFINERs 添加到转储中。但是,有一些方法可以在创建转储文件后将其删除。

  1. 在文本编辑器中打开转储文件,并用DEFINER=root@localhost空字符串“” 替换所有出现的

  2. 使用以下命令编辑转储(或管道输出)perl

    perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
    
  3. 通过sed以下管道输出:

    mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql
    


 类似资料:
  • 存储过程被创建后,就会一直保存在数据库服务器上,直至被删除。当 MySQL 数据库中存在废弃的存储过程时,我们需要将它从数据库中删除。 MySQL 中使用 DROP PROCEDURE 语句来删除数据库中已经存在的存储过程。语法格式如下: DROP PROCEDURE [ IF EXISTS ] <过程名> 语法说明如下: 过程名:指定要删除的存储过程的名称。 IF EXISTS:指定这个关键字,

  • 问题内容: 范围:两个表。创建新的顾客时,他们会将有关他们的一些信息存储到第二张表中(这也使用触发器完成,它可以按预期工作)。这是我的表结构和关系的示例。 表1-> 顾客 表2-> patron_info 管理员可以管理顾客。当他们选择移走顾客时,将顾客从 桌子1 移开。此时, 表2 没有任何反应。 我只是想创建一个触发器,以便在表1的项目已删除时从表2中删除。这是我尝试过的… 最初,我尝试删除触

  • 所以我是JavaFX的新手,我正在尝试为学校做一个应用程序,我已经阅读了很多相关的帖子,但我似乎不知道如何为我自己的案例做。这是一张照片 因此,大屏幕是我的主屏幕,带有红色边框的是Vbox的子屏幕。对于孩子,我有一个单独的FXML和一个控制器。当我点击“成交”按钮时,我想删除Vbox的特定子级。 我知道我应该做parent.get孩子()。删除(specific_child_node);问题是我不

  • 问题内容: 从视图中删除一行,是否会从创建该视图的基表中删除相应的行?我正在使用MySQL。 问题答案: 是的,它会的。唯一需要注意的是权限。 引用官方文档 有些观点是可更新的。也就是说,您可以在诸如UPDATE,DELETE或INSERT之类的语句中使用它们来更新基础表的内容。为了使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造会使视图不可更新。

  • 问题内容: 这是正确的方法吗? 问题答案: 对,那是正确的。在这里工作正常: 如果对您不起作用,则可以修改此示例以显示您遇到的问题。

  • 本文向大家介绍从视图中删除行会从MySQL的基表中删除行吗?,包括了从视图中删除行会从MySQL的基表中删除行吗?的使用技巧和注意事项,需要的朋友参考一下 是的,从视图中删除行从基表中删除行。让我们通过创建一个新表来了解这一点。创建表的查询如下 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 让我们创建一个视图。创建视图的查询如下