作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到的问题是触发器定义在其中硬编码了原始架构名称,例如:
TRIGGER `sales`.`tender_delete_trigger`
AFTER DELETE ON `sales`.`tender`
FOR EACH ROW
......
因此,如果使用 mysqldump 备份“sales”模式,然后尝试恢复到同一服务器上新创建的名为“sales_test”的模式,我会收到一条错误消息,指出同一台服务器上不允许使用多个触发器。事件。
我当前的解决方案是在转储文件中手动将旧架构名称“sales”替换为新架构名称“sales_test”。这可行,但是有没有更简单、更简单的解决方案?
最佳答案
不要手动执行此操作。由于您没有指定操作系统,我将假设使用 Linux,尽管大多数其他操作系统都有等效的操作系统:
vim -c'%s/`sales`/`new_schema_name`/g' -c':x' dumpfile.sql
另一种可能性是从触发器中省略模式名称。假定当前架构。
<小时/>(编辑)
1) 同意。但重命名模式一开始就是一个奇怪的问题。 2)这肯定是一个风险,因为可能存在类似名称的表和变量。对模式的修改可能会有所帮助:
%s/\([^.]\)`sales`\([.]\)/\1`new_schema_name`\2/g
坚持模式名称放置在适当的位置,除非中间有空格。
关于mysql - 使用触发器转储 mysql5.5 模式并恢复到具有不同名称的新模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680205/
我使用以下命令创建了一个只读用户 CREATE ROLE read_only WITH LOGIN PASSWORD 'password' NOSUPERUSER INHERIT NOCREATEDB
我正在为我正在构建的许多应用程序设计 OOP 继承模式。 Javascript 有很多方法可以做到这一点,但我偶然发现了一种我非常喜欢的模式。但现在我正在为分离类和实例的需要而苦苦挣扎。 我有一个名为
我是一名优秀的程序员,十分优秀!