Mysqldump menambahkan drop table?

10

Saya perhatikan dalam Codex bahwa opsi --add-drop-table ditampilkan untuk membuat cadangan database. Sebelum saya mengacaukan sesuatu, apakah ini hanya berarti bahwa ketika cadangan akhirnya diimpor, tabel akan menimpa jika mereka ada di db tujuan?

Saya tidak ingin menjatuhkan meja ketika saya mendukungnya!

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
sumber

Jawaban:

10

Ini hanya mempengaruhi output dump MySQL Anda di file yang dibuat.

Itu tidak perlu. Itu hanya ada sehingga jika Anda mengimpor file dump yang dibuat ke database yang sudah memiliki tabel dengan nama yang sama, itu akan menjatuhkan tabel itu dan kemudian menambahkan tabel baru di tempatnya. Kalau tidak, Anda akan mendapatkan kesalahan, dan file dump tidak akan diimpor.

Itu menambahkan baris ini sebelum membuat tabel pernyataan dalam file dump:

DROP TABLE IF EXISTS `tablename`;

Jika Anda berencana untuk mengimpor file dump ke database baru, itu tidak masalah.

Jake
sumber
Anda tahu apa yang menarik adalah bahwa bahkan jika saya menggunakan dump tanpa opsi add-drop-table pada database WP yang ada, itu berfungsi dengan baik juga.
AlxVallejo
5

Itu karena keseluruhan sintaksnya berjalan seperti:

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

--optdiaktifkan secara default (yang menyiratkan:) --add-drop-tablesebagaimana disebutkan dalam dokumentasi MySQL.

pengguna2063478
sumber
0

Saat menghapus --add-drop-table dalam sintaks ini, --add-drop-table digunakan, karena --opt adalah default (kecuali jika Anda menggunakan --skip-opt) dan --opt menyertakan --add-drop -meja. Lihat di sini: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

Dan, seperti yang dinyatakan di atas, itu tidak berarti bahwa tabel Anda dijatuhkan ketika Anda membuat cadangan, tetapi bahwa perintah untuk menjatuhkan tabel termasuk dalam file sql, karena itulah yang Anda inginkan untuk dump, sehingga Anda dapat mengimpor dump tanpa mendapatkan kesalahan bahwa tabel sudah ada.

Markus
sumber