我有一个包含 1000 多个表的数据库,当我使用 mysqldump 导出它时,我使用--ignore-table=来删除我不想要的表,一切都导出正常,但是当导入 mysql 时,它说 table not在与我忽略的表对应的视图部分找到。
这是导致错误的sql部分:
/*!50001 DROP TABLE IF EXISTS `v_aaa`*/;
/*!50001 DROP VIEW IF EXISTS `v_aaa`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = utf8 */;
/*!50001 SET character_set_results = utf8 */;
/*!50001 SET collation_connection = utf8_general_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`ebusiness`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `v_aaa` AS (select `tb1`.`field1` AS `mycode`,`tb1`.`field2` AS `myname`,`tb1`.`limit` AS `mylimit` from tb1) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
问题是 tb1 在我的忽略列表中,我在导入过程中收到此错误:
ERROR 1146 (42S02) at line 63036: Table 'db.tb1' doesn't exist
我使用以下方法转储数据库:
mysqldump --user=root --password=**** --host=***.***.***.*** --single-transaction --ignore-table=tb1 --ignore-table=tb2 --ignore-table=tb3 dbxx > somefile.sql
如果忽略该表以防止此错误,您知道如何摆脱视图代码吗?
更新:我是否可以循环进入视图的内部 information_schema 以检查他们正在使用的表,如果视图的表出现在忽略列表中,我们只需使用 --ignore-table= 忽略该视图?也许使用 bash 脚本?