在mysqldump输出中视图定义不正确之前的DROP TABLE

时间:2012-04-29 04:00:50

标签: mysql view mysqldump

我在共享的Web主机上有一个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继续前进呢?

1 个答案:

答案 0 :(得分:1)

从不了解问题所在,但我的解决方法是首先使用--no-data转储表定义,然后使用xargs分别使用--no-create-table转储每个表的数据。