我使用mysqlpump来备份数据库:
mysqlpump --single-transaction --add-drop-database --skip-definer --databases mydatabase --result-file/opt/myservice/backup/export.sql
我的数据库包含多个 View ,其中一部分是在 CREATE VIEW 查询中使用完全错误的 SELECT 导出的,如下所示:
CREATE VIEW `careerpulse-staging`.`user_view` AS SELECT
1 AS `id`,
1 AS `name`,
1 AS `department`,
1 AS `manager_id`
;
为什么会发生这种情况?我该如何解决?
MySQL版本是5.7
最佳答案
这是预期行为,而不是错误。查看完整转储文件。
无法创建引用其他 View 或表的 View ,除非这些其他 View 或表已经存在。
为了消除潜在的循环依赖,在第一遍中创建虚拟 View ,在创建所有 View 和表后,删除这些虚拟 View 并在第二遍中创建真实 View 。
应该在转储文件末尾附近找到正确的 View 定义。
关于mysqlpump 生成不正确的创建 View 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51001687/