Mysqldump add drop table?

10

Je remarque dans le Codex que l'option --add-drop-table est affichée pour sauvegarder une base de données. Avant de bousiller quoi que ce soit, cela signifie-t-il simplement que lorsque la sauvegarde est finalement importée, les tables seront écrasées si elles existent dans la base de données de destination?

Je ne veux pas laisser tomber les tables quand je les sauvegarde!

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
la source

Réponses:

10

Cela n'affecte que la sortie de votre vidage MySQL dans le fichier créé.

Ce n'est pas nécessaire. Il est juste là pour que si vous importez le fichier de vidage créé dans une base de données qui a déjà une table du même nom, il supprimera cette table, puis ajoutera la nouvelle table à sa place. Sinon, vous obtiendrez une erreur et le fichier de vidage ne sera pas importé.

Il ajoute cette ligne avant l'instruction create table dans le fichier de vidage:

DROP TABLE IF EXISTS `tablename`;

Si vous prévoyez d'importer le fichier de vidage dans une nouvelle base de données, cela n'aura pas d'importance.

Jake
la source
Vous savez ce qui est intéressant, c'est que même si j'utilise le vidage sans l'option add-drop-table sur une base de données WP existante, cela fonctionne très bien également.
AlxVallejo
5

C'est parce que la syntaxe globale va quelque chose comme:

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

--optest activé par défaut (ce qui implique:) --add-drop-tablecomme mentionné dans la documentation MySQL.

user2063478
la source
0

Lors de la suppression de --add-drop-table dans cette syntaxe, --add-drop-table est de toute façon utilisé, car --opt est la valeur par défaut (sauf si vous utilisez --skip-opt) et --opt inclut --add-drop -table. Voir ici: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

Et, comme indiqué ci-dessus, cela ne signifie pas que vos tables sont supprimées lors de la sauvegarde, mais que les commandes de suppression des tables sont incluses dans le fichier sql, car c'est ce que vous voulez pour un vidage, vous pouvez donc importer le vidage sans obtenir erreurs que les tables existent déjà.

Markus
la source