Mysqldump add drop table?

10

Percebo no Codex que a opção --add-drop-table é exibida para fazer backup de um banco de dados. Antes de eu estragar tudo, isso significa apenas que, quando o backup for importado, as tabelas serão substituídas se existirem no banco de dados de destino?

Não quero largar as mesas quando as fizer backup!

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

AlxVallejo
fonte

Respostas:

10

Isso afeta apenas a saída do seu despejo do MySQL no arquivo criado.

Não é necessário. Está lá apenas para que, se você importar o arquivo de despejo criado para um banco de dados que já tenha uma tabela com o mesmo nome, ele solte essa tabela e adicione a nova tabela em seu lugar. Caso contrário, você receberá um erro e o arquivo de despejo não será importado.

Ele adiciona esta linha antes da instrução create table no arquivo de despejo:

DROP TABLE IF EXISTS `tablename`;

Se você planeja importar o arquivo de despejo para um novo banco de dados, isso não importa.

Jake
fonte
Você sabe o que é interessante é que, mesmo que eu use o dump sem a opção add-drop-table em um banco de dados WP existente, ele também funcionará bem.
AlxVallejo 22/09/12
5

Isso ocorre porque a sintaxe geral é algo como:

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

--opté ativado por padrão (o que implica:) --add-drop-tableconforme mencionado na documentação do MySQL.

user2063478
fonte
0

Ao remover --add-drop-table nesta sintaxe, --add-drop-table é usado de qualquer maneira, porque --opt é o padrão (a menos que você use --skip-opt) e --opt inclui --add-drop -mesa. Consulte aqui: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

E, como afirmado acima, isso não significa que suas tabelas são descartadas quando você faz backup, mas que os comandos para eliminar tabelas estão incluídos no arquivo sql, porque é isso que você deseja para um despejo, para que você possa importar o despejo sem obter erros que as tabelas já existem.

Markus
fonte