0

id自動インクリメントされる主キーを含むさまざまなフィールドを持つテーブルがあります。

+-------------------------------+------------------+------+-----+---------+
| Field                         | Type             | Null | Key | Default | Extra
+-------------------------------+------------------+------+-----+---------+
| id                              | tinyint(11)      | NO | PRI | NULL   | auto_increment

テーブルにはすでに 114 個の項目が入力されています。

mysql> select count(*) as cnt from beer;
+-----+
| cnt |
+-----+
| 114 | 
+-----+

そして、新しいアイテムのグループをテーブルに挿入しようとしています。IDキーを明示的に挿入していません。サンプルクエリは次のとおりです。

mysql> INSERT INTO beer (name, type, alcohol_by_volume, description, image_url) 
    VALUES('Test Ale', 1, '4.6', '', 'https://untappd.s3.amazonaws.com/site/assets/images/temp/badge-beer-default.png');

そのクエリを手動で挿入しようとすると、次のエラーが発生します (挿入は実際には PHP スクリプトを使用して行われ、同じ結果が得られます)。

ERROR 1062 (23000): Duplicate entry '127' for key 1

どうしたの?挿入時にIDが自動的にインクリメントされると思いました。最初の 13 エントリは何らかの理由で空白/null であり、最後のキーは現在 127 であることに注意してください (これは私のテーブルではありません。スクリプトを書いているだけです)。

4

2 に答える 2

4

Tiny int は、auto_increment プライマリ キーの適切な選択ではありません...範囲はちょうど (-128...127) です。通常はフラグとして使用されます。使用する必要がありますunsigned int

于 2013-05-07T16:34:36.247 に答える
1

これを使用して、主キーの自動インクリメントを手動でリセットしてみてください。

ALTER TABLE `beer` AUTO_INCREMENT = 128;
于 2013-05-07T16:44:35.387 に答える