0

我在共享网络主机上有一个 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`*/;

他们被创造得很好。

在这个问题之后,我在导入转储时尝试过mysql -f,但 mysql 仍然因错误而停止。

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

4

1 回答 1

1

从来不明白问题出在哪里,但我的解决方法是首先使用 .dump 仅转储表定义--no-data,然后使用 xargs 使用--no-create-table.

于 2012-05-01T02:42:43.393 回答