我正在使用 mysqldump 从系统中转储数据库。问题是:有时SQL文件在文件的中间包含一个“删除数据库”,不幸的是这些文件的导入失败 - 在我看来很合乎逻辑。
mysqldump 命令行如下:
mysqldump -u$USER -p$PASS \
--default-character-set=utf8 --single-transaction \
--add-drop-database --add-drop-table \
--databases $DB
当我尝试重新导入此 SQL 文件时,我收到此错误:ERROR 1146 (42S02) at line 3486: Table 'meta.tx_baauftragsdb_auft' doesn't exist
.
查看 SQL 转储文件,我看到以下几行:
3470 --
3471 -- Current Database: `meta`
3472 --
3473
3474 /*!40000 DROP DATABASE IF EXISTS `meta`*/;
3475
3476 CREATE DATABASE /*!32312 IF NOT EXISTS*/ `meta` /*!40100 DEFAULT CHARACTER SET utf8 */;
3477
3478 USE `meta`;
3479
3480 --
3481 -- View structure for view `tx_baauftragsdb_view_ueber`
3482 --
3483
3484 /*!50001 DROP TABLE IF EXISTS `tx_baauftragsdb_view_ueber`*/;
3485 /*!50001 DROP VIEW IF EXISTS `tx_baauftragsdb_view_ueber`*/;
3486 /*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`meta`@`localhost` SQL SECURITY
...并且有 DROP DATABSE 语句。如果我删除此语句下方的所有内容,则 db 导入就好了,但是......好吧......我想知道这里发生了什么。
谁能告诉我这里发生了什么,为什么会有这个额外的DROP DATABASE
声明,也许我做错了什么?