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