Mysqldump dodać drop table?

10

Zauważam w Kodeksie, że wyświetlana jest opcja --add-drop-table do tworzenia kopii zapasowej bazy danych. Czy zanim coś spieprzę, oznacza to po prostu, że po ostatecznym zaimportowaniu kopii zapasowej tabele zostaną zastąpione, jeśli istnieją w docelowej bazie danych?

Nie chcę upuszczać stołów, kiedy je wykonuję!

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
źródło

Odpowiedzi:

10

Wpływa tylko na dane wyjściowe zrzutu MySQL w tworzonym pliku.

To nie jest konieczne. Jest tak, że jeśli zaimportujesz utworzony plik zrzutu do bazy danych, która ma już tabelę o tej samej nazwie, usunie tę tabelę, a następnie doda nową tabelę na swoim miejscu. W przeciwnym razie pojawi się błąd i plik zrzutu nie zostanie zaimportowany.

Dodaje ten wiersz przed instrukcją tworzenia tabeli w pliku zrzutu:

DROP TABLE IF EXISTS `tablename`;

Jeśli planujesz zaimportować plik zrzutu do nowej bazy danych, nie będzie to miało znaczenia.

Jake
źródło
Wiesz, co ciekawe, nawet jeśli korzystam ze zrzutu bez opcji dodawania tabeli zrzutu w istniejącej bazie danych WP, to również działa dobrze.
AlxVallejo
5

Jest tak, ponieważ ogólna składnia wygląda mniej więcej tak:

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

--optjest domyślnie włączony (co oznacza:), --add-drop-tablejak wspomniano w dokumentacji MySQL.

użytkownik2063478
źródło
0

Podczas usuwania --add-drop-table w tej składni, --add-drop-table jest i tak używany, ponieważ --opt jest domyślny (chyba że użyjesz --skip-opt), a --opt zawiera --add-drop -stół. Zobacz tutaj: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

I, jak wspomniano powyżej, nie oznacza to, że tabele są upuszczane podczas tworzenia kopii zapasowej, ale polecenia usuwania tabel są zawarte w pliku sql, ponieważ tego właśnie chcesz dla zrzutu, abyś mógł go zaimportować bez uzyskiwania błędy, że tabele już istnieją.

Markus
źródło