Railsで初期データ入れるのにseed-fu使っている訳ですがAutoIncrement列の値をリセットしようとしたら一筋縄じゃいかなかったっていういかにもRails初心者ってバレそうな話をするよ。
とりあえずAUTO_INCREMENT=1してみる
単純にMySqlのコマンドでAutoIncrementをリセットしてみた
ALTER TABLE テーブル名 AUTO_INCREMENT = 1;
ダメだった。
厳密にはseed-fu
流し直す際にAUTO_INCREMENTに値をセットしているっぽい。なのでダメだった。
試しにリセット後に直接INSERT文流すとID:1のデータがちゃんと入る。
mysql> ALTER TABLE テーブル名 AUTO_INCREMENT = 1;
mysql> INSERT INTO テーブル名 (NAME) values ('shiitake');
mysql> SELECT ID FROM テーブル名;
+----+
| id |
+----+
| 1 |
+----+
解決したよ。
ActiveRecordでリセットすればいい。
ActiveRecord::Base.connection.execute('ALTER TABLE テーブル名 AUTO_INCREMENT = 1')
どこかしらで前回の採番値を管理しているっぽいけど調べてもすぐ出てこなかったのでまたの機会にちゃんと調べよう。