mysqldumpコマンドのデフォルト状態で出力されるINSERT文にはカラム名の情報が含まれていない。以下例(※ 見やすいようにインデントしている)。
INSERT INTO `users` VALUES (1,'taro',20,'male',1,'2019-02-13 23:44:02','2019-02-13 23:44:02'), (2,'jiro',30,'male',1,'2019-02-13 23:44:11','2019-02-13 23:44:11') ;
dump元とrestore先で全く同じテーブル構成であれば特に問題はないが、例えばカラム名の順番がちょっと違っているような場合だとデータがズレた状態でINSERTされることになってしまう。
そのようなときは、--complete-insert
or -c
オプションをつけてmysqldumpを実行するとカラム名を含んだINSERT文を出力してくれるようになる。
INSERT INTO `users` (`id`, `name`, `age`, `sex`, `premium`, `created_at`, `updated_at`) VALUES (1,'taro',20,'male',1,'2019-02-13 23:44:02','2019-02-13 23:44:02'), (2,'jiro',30,'male',1,'2019-02-13 23:44:11','2019-02-13 23:44:11') ;
ちなみにmysqldumpのmanを見るとそのままのことが書かれている
o --complete-insert, -c Use complete INSERT statements that include column names.