【问题标题】:DROP TABLE before view definition incorrect in mysqldump outputmysqldump 输出中视图定义不正确前的 DROP TABLE
【发布时间】:2012-04-29 04:00:50
【问题描述】:

我在共享网络主机上有一个 mysql 数据库。有些表相当大,我们的夜间转储进程被杀死了。所以我制作了一个脚本,在数据库中查询所有表名,并将它们单独转储,将它们全部连接到一个文件中。

mysql -uusername -ppassword -hhostname dbname < <(echo 'SHOW TABLES') | xargs -I TableName sh -c 'nice -19 mysqldump --opt -uusername -ppassword -hhostname dbname TableName >> /path/to/dump.sql'

我现在遇到一个问题,其中一个视图定义(据我所知,MySQL 在其转储文件中有特殊的视图创建语句)导致错误

ERROR 1146 (42S02) at line 5182: Table 'dbname.vView' doesn't exist

我在转储文件中查找了第 5182 行,这是第一行,它开始创建视图:

/*!50001 DROP TABLE `vView`*/;
/*!50001 DROP VIEW IF EXISTS `vView`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */

然而,无论出于何种原因,转储文件中的其他视图都有

/*!50001 DROP TABLE IF EXISTS `vOtherView`*/;

它们被创建得很好。

按照这个question,我在导入转储时尝试了mysql -f,但mysql仍然因错误而停止。

如何使转储文件具有格式正确的视图创建语句(除了对转储文件进行一些后处理)?或者无论如何我怎样才能让mysql继续前进?

【问题讨论】:

    标签: mysql view mysqldump


    【解决方案1】:

    一直不明白问题出在哪里,但我的解决方法是先用--no-data 转储表定义,然后使用xargs 用--no-create-table 单独转储每个表的数据。

    【讨论】:

    • 我觉得应该是--no-create-info ?
    猜你喜欢
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多