Mysqldump Drop-Tabelle hinzufügen?

10

Ich stelle im Codex fest, dass die Option --add-drop-table zum Sichern einer Datenbank angezeigt wird. Bedeutet dies nur, dass die Tabellen beim eventuellen Import der Sicherung überschrieben werden, wenn sie in der Zieldatenbank vorhanden sind, bevor ich etwas vermassle?

Ich möchte die Tische nicht fallen lassen, wenn ich sie sichere!

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
quelle

Antworten:

10

Dies wirkt sich nur auf die Ausgabe Ihres MySQL-Dumps in der erstellten Datei aus.

Es ist nicht notwendig. Wenn Sie die erstellte Dump-Datei in eine Datenbank importieren, die bereits eine Tabelle mit demselben Namen enthält, wird diese Tabelle gelöscht und die neue Tabelle an ihrer Stelle hinzugefügt. Andernfalls wird eine Fehlermeldung angezeigt und die Speicherauszugsdatei wird nicht importiert.

Diese Zeile wird vor der Anweisung create table in der Speicherauszugsdatei hinzugefügt:

DROP TABLE IF EXISTS `tablename`;

Wenn Sie die Dump-Datei in eine neue Datenbank importieren möchten, spielt dies keine Rolle.

Jake
quelle
Sie wissen, was interessant ist, ist, dass selbst wenn ich den Speicherauszug ohne die Option add-drop-table in einer vorhandenen WP-Datenbank verwende, er auch gut funktioniert.
AlxVallejo
5

Das liegt daran, dass die Gesamtsyntax ungefähr so aussieht:

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

--optist standardmäßig aktiviert (was impliziert :), --add-drop-tablewie in der MySQL-Dokumentation erwähnt.

user2063478
quelle
0

Beim Entfernen von --add-drop-table in dieser Syntax wird --add-drop-table sowieso verwendet, da --opt die Standardeinstellung ist (es sei denn, Sie verwenden --skip-opt) und --opt --add-drop enthält -Tabelle. Siehe hier: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

Und wie oben erwähnt, bedeutet dies nicht, dass Ihre Tabellen beim Sichern gelöscht werden, sondern dass die Befehle zum Löschen von Tabellen in der SQL-Datei enthalten sind, da Sie dies für einen Speicherauszug wünschen, sodass Sie den Speicherauszug importieren können, ohne ihn abzurufen Fehler, dass die Tabellen bereits vorhanden sind.

Markus
quelle