Rails×MySqlでAutoIncrement列をリセットできなくて困った困った

rails Rails
mysql MySQL

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')

どこかしらで前回の採番値を管理しているっぽいけど調べてもすぐ出てこなかったのでまたの機会にちゃんと調べよう。