19
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

19
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?