mysqldump添加drop表?


10

我注意到在Codex中显示了--add-drop-table选项,用于备份数据库。在我搞砸之前,这是否仅表示最终导入备份时,如果目标数据库中存在表,这些表将被覆盖?

我不想在备份表时放下它们!

user@linux:~/files/blog> mysqldump --add-drop-table -h mysqlhostserver
 -u mysqlusername -p databasename (tablename tablename tablename) | bzip2
 -c > blog.bak.sql.bz2

Enter password: (enter your mysql password)
user@linux~/files/blog>

http://codex.wordpress.org/Backing_Up_Your_Database#Using_Straight_MySQL_Commands

Answers:


10

它仅影响所创建文件中MySQL转储的输出。

没必要 就是这样,如果您将创建的转储文件导入到已经具有相同名称表的数据库中,它将删除该表,然后在其位置添加新表。否则,您将收到错误消息,并且不会导入转储文件。

它在转储文件中的create table语句之前添加以下行:

DROP TABLE IF EXISTS `tablename`;

如果您打算将转储文件导入到新数据库中,则没关系。


您知道有趣的是,即使我在现有WP数据库上使用不带add-drop-table选项的转储,它也可以正常工作。
AlxVallejo 2012年

5

这是因为整体语法类似于:

mysql>mysqldump --opt --all-databses > all.sql

--opt默认情况下是启用的(这意味着:),--add-drop-table如MySQL文档中所述。


0

以这种语法删除--add-drop-table时,无论如何都使用--add-drop-table,因为--opt是默认设置(除非使用--skip-opt),而--opt包括--add-drop -表。看到这里:https : //dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

并且,如上所述,这并不意味着在备份时已删除表,而是sql文件中包含了用于删除表的命令,因为这是您要进行转储的目的,因此您可以导入转储而无需获取表已存在的错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.