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


10

コーデックスで、データベースのバックアップに--add-drop-tableオプションが表示されていることに気付きました。何かを台無しにする前に、これは、バックアップが最終的にインポートされるときに、テーブルが宛先データベースに存在する場合、テーブルが上書きされることを意味するだけですか?

バックアップ時にテーブルを削除したくない!

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

回答:


10

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

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

ダンプファイルのテーブル作成ステートメントの前に次の行を追加します。

DROP TABLE IF EXISTS `tablename`;

ダンプファイルを新しいデータベースにインポートする場合は、問題ありません。


興味深いのは、既存のWPデータベースでadd-drop-tableオプションを指定せずにダンプを使用しても、問題なく機能することです。
AlxVallejo 2012

5

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

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

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


0

この構文で--add-drop-tableを削除すると、-add-drop-tableが使用されます。これは、-optがデフォルトであり(--skip-optを使用しない場合)、-optに--add-dropが含まれているためです-テーブル。こちらをご覧くださいhttps : //dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.