Redmine のチケットを復活させた ときに、誤ってissuesテーブルに違うtsvを食わせてしまい、ゴミデータを追加してauto_incrementの数字を大きくしてしまった。
手動で直したので、そのときの手順。
手順
状況確認
Auto_increment列をみる。
show table status like 'issues'\G;
mysql> show table status like 'issues'\G; *************************** 1. row *************************** Name: issues Engine: InnoDB Version: 10 Row_format: Compact Rows: 4713 Avg_row_length: 1004 Data_length: 4734976 Max_data_length: 0 Index_length: 1376256 Data_free: 9437184 Auto_increment: 13008 Create_time: 2013-09-12 16:06:01 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.01 sec) ERROR: No query specified
昨日まで5000くらいだったのに…
データをバックアップしておく
壊れたデータなのでいらないと思うけど、一応バックアップしておく。
mysql -u redmine -p -D redmine_db -e'select * from issues where id > 5348;' > issues.tsv
AUTO_INCREMENTを変更する
AUTO_INCREMENTで指定した数字より大きいidがなければ、正しく変更されるはず。
ALTER TABLE issues AUTO_INCREMENT = 5348;
変更できてなくても、Query OK
が返ってくるので注意。しっかり確認すべし。
mysql> ALTER TABLE issues AUTO_INCREMENT = 5348; Query OK, 5068 rows affected (0.98 sec) Records: 5068 Duplicates: 0 Warnings: 0