42748


 **前提**  
・色々試行錯誤しているので、何回かやり直している状態です

* * *

**Q1.「mysqldump --all-
databases」で取得したDUMPデータをインポートする際、既存同名があった場合、上書きされるでしょうか？**  
・データベースは「IF NOT EXISTS」がコメントアウトされている(?)から、上書きされる？

[code]

    CREATE DATABASE /*!32312 IF NOT EXISTS*/
    
[/code]

・テーブルは削除後、作成される？

[code]

      DROP TABLE IF EXISTS `テーブル名`;
    
[/code]

* * *

**Q2.データベース構成をインストール直後の構成に戻すことは可能でしょうか？**  
・何回かdumpデータをインストールしたのですが、可能ならその前の状態へ戻したい

* * *

**環境**  
・MySQL5.7


CC BY-SA 3.0
2018-03-29T08:03:41.690
42744
2018-03-29T10:00:01.177
7886
question
mysql
「mysqldump --all-databases」内容をデータベースへインポートしたいのですが、


はじめに、  
"IF EXISTS"は存在した場合  
"IF NOT EXISTS"は存在しない場合に実行されます。

> Q1.「mysqldump --all-databases」で取得したDUMPデータをインポートする際、既存同名があった場合、上書きされるでしょうか？

いえ、存在した場合DROPされ、そのあとに再作成されるはずです。  
DUMPデータを見ると、DROP TABLE文のあとにCREATE TABLE文が書かれていると思います。  
また、存在しているが "IF NOT EXISTS" を入れずにCREATE TABLEを発行した場合、エラーが発生するはずです。

[code]

    ERROR 1007 (HY000): Can't create database 'NewYork'; database exists
    
[/code]

> データベース構成をインストール直後の構成に戻すことは可能でしょうか？

DBを一旦削除し、再度インストールするのがいいかもしれません。

また、何度も試すような可能性があるなら、Dockerでmysqlサーバを用意してそれにdumpを適用する方法を取ると良いかもしれません。使い捨てがかなり楽になるとおもいます。(かならずしもDockerである必要はありません。)


CC BY-SA 3.0
2018-03-29T09:47:58.373
42748
2018-03-29T09:47:58.373
24823
42744
answer


> 上書きされるでしょうか？

SQLダンプは、INSERT文で出力されるので、データは追加されます。  
また、オプションで`

[code]

      --add-drop-database　
    
      --add-drop-table
    
[/code]

を指定しなければ、DATABASEやTABLEは削除されません。

これ以上失うもの（データ）が無いなら、一度データファイルを削除して、DATABASEをCREATEし直すことで初期状態に戻せます。


CC BY-SA 3.0
2018-03-29T10:00:01.177
42750
2018-03-29T10:00:01.177
22793
42744
answer