mysqlについて質問です。 テーブル名 seito カラム名 id(auto_increment),name がを用意しています。 今まで、

補足

まだidは2804までしか使っておらず、 2805を割り振ってほしいのに最大値にジャンプしてしまっています。

MySQL | データベース48閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ThanksImg質問者からのお礼コメント

おっしゃる通り、sqlを実行したら治りました!!! シンプルな対応でありがとうございました!!

お礼日時:5/30 22:03

その他の回答(2件)

0

MySQLのバグ報告をちらっと検索してみたのですが、そういったものは無かったです。 AUTO_INCREMENT列に負の値を設定してしまったりすると、正の大きな数になってしまうといった記載がマニュアルにあります。 問題のテーブルで大きな値になってしまったものを、再度、採番したいなら次のような手順で可能です。 (1)seitoの退避用テーブルを定義 CREATE TABLE tmp_seito LIKE seito; (2)id>2804のデータを退避 INSERT INTO tmp_seito SELECT * FROM seito WHERE id>2804; またはこの後、seitoからデータを削除するのでバックアップ代わりに全データを退避。 INSERT INTO tmp_seito SELECT * FROM seito; (3)id>2804のデータを削除 DELETE FROM seito WHERE id>2804; (4)AUTO_INCREMENTを2805から採番するようにリセット ALTER TABLE seito AUTO_INCREMENT=2805; (5)退避テーブルからデータを戻し、この時、idは採番し直す INSERT INTO seito(`name`) SELECT `name` FROM tmp_seito WHERE id>2804 ORDER BY id; (6)(5)のデータを確認 (7)退避テーブルを削除

0

さすがに最大値を超えるとちゃんと動作しませんよ。 alter table なんかで、 int 型を bigint にでも変更しておきましょう。 bigint なら普通は限界に達することは無いと思います。

2804までしかまだ割り振られてないのに、急に最大値になってしまっています。 なぜ2805を割りふってくれないのかが気になってます。 bigintにするという方法もあるんですね。