mysqldump 生成不正确的创建视图查询

Dmi*_*lov 5 mysqldump mysql-5.7

我使用 mysqlpump 来备份数据库:

mysqlpump --single-transaction --add-drop-database --skip-definer \ --databases mydatabase --result-file /opt/myservice/backup/export.sql

我的数据库包含多个视图,其中一些视图在 CREATE VIEW 查询中使用完全错误的 SELECT 导出,如下所示:

CREATE VIEW `careerpulse-staging`.`user_view` AS SELECT
 1 AS `id`,
 1 AS `name`,
 1 AS `department`,
 1 AS `manager_id`
;
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?我该如何解决?

小智 5

当转储/泵送 MySQL 数据库时,输出脚本首先将其生成为临时结构,然后在脚本末尾,它会删除它并创建实际的视图本身,如下所示:

...DROP VIEW IF EXISTS myview ...

如果最终视图仍然选择 1s,可能是因为数据库名称不匹配,当您在 mysqldump 中使用 --databases 选项时,脚本将输出

USE database_name

在多个位置(不仅在脚本的顶部),特别是在 DROP 和重新创建实际视图之前有一个。

当我导出和导入具有不同名称的数据库时,就发生了这种情况。