web-dev-qa-db-ja.com

Mysqldumpはドロップテーブルを追加しますか?

データベースをバックアップするために--add-drop-tableオプションが表示されることがCodexでわかりました。私が何かを台無しにする前に、これはバックアップが結局インポートされるとき、それらがデスティネーションdbに存在するならばテーブルが上書きされることを意味しますか?

バックアップ時にテーブルを削除したくありません。

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

9
AlxVallejo

作成されたファイル内のMySQLダンプの出力にのみ影響します。

必要ではありません。作成されたダンプファイルを、同じ名前のテーブルがすでに存在するデータベースにインポートすると、そのテーブルが削除され、その場所に新しいテーブルが追加されます。そうでなければエラーになり、ダンプファイルはインポートされません。

ダンプファイルのcreate table文の前に次の行を追加します。

DROP TABLE IF EXISTS `tablename`;

ダンプファイルを新しいデータベースにインポートする予定であれば、問題ありません。

7
Jake

これは、 全体の構文 が次のようになるためです。

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

MySQLのドキュメントで説明されているように、--optはデフォルトで有効になっています(つまり--add-drop-table)。

5
user2063478

この構文で--add-drop-tableを削除すると、 - optがデフォルトになり(--skip-optを使用しない限り)、 - optに--add-dropが含まれるため、 - add-drop-tableが使用されます。 -表。ここを参照してください: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

また、前述のように、バックアップ時にテーブルが削除されるわけではありませんが、テーブルを削除するためのコマンドがsqlファイルに含まれているため、ダンプを作成する必要はありません。テーブルがすでに存在しているというエラー.

0
Markus