【问题标题】:Mysqldump broken CREATE VIEW exportmysqldump 损坏的 CREATE VIEW 导出
【发布时间】:2016-01-07 15:58:48
【问题描述】:

我通过 mysqldump 创建的数据库备份使用错误的源 SQL 查询创建所有数据库视图。所有源列始终为“1”。我可以使用 mysql 工作台和相同的 db 用户导出视图定义就好了。

这里是 mysqldump 生成的视图定义示例

DROP TABLE IF EXISTS `my_table_name`;
/*!50001 DROP VIEW IF EXISTS `my_table_name`*/;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `my_table_name` AS SELECT 
 1 AS `id`,
 1 AS `col1`,
 1 AS `col2`,
 1 AS `col3`,
 1 AS `col4`,
 1 AS `col5`*/;
SET character_set_client = @saved_cs_client;

同样的事情发生在 Percona Server 5.6.12 和 5.6.25

【问题讨论】:

    标签: mysqldump percona


    【解决方案1】:

    生成的视图是错误的,因为它是一个临时视图,所有列的值都是“1”。

    mysqldump时,视图作为临时视图生成,正常创建视图时替换。

    也许你出于和我一样的原因没有生成视图,所以似乎只创建了一个临时视图。

    在我看来,mysql 5.7.31 在 mysqldump 期间没有自动将 DB 名称和用户 ID 转换为视图的源。 我推荐你。备份要复制的数据库时,制作单独的架构和数据文件。

    mysqldump -u USERID -pPASSWORD DBNAME --no-data --triggers --routines > filePath\filename.sql
    mysqldump -u USERID -pPASSWORD DBNAME --no-create-info > filePath\filename.sql
    

    修改架构备份文件上的名称和用户 ID。

    之后,恢复两个备份文件即可正常恢复视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多