[前][次][番号順一覧][スレッド一覧]

mysql:14941

From: Mikiya Okuno <Mikiya Okuno <Mikiya.Okuno@xxxxxxxxxx>>
Date: Wed, 01 Jul 2009 14:39:57 +0900
Subject: [mysql 14941] Re: auto_increment属性について

岡田様

サンの奥野です。

On 01/07/2009, at 11:49 AM, Takayuki Okada wrote:
> その後、仕様上は、単一のユニークでないといけないとのことから、
> 構成を見直したうえ、いろいろと検証をやってみましたが、
> 下記の手順できれいな連番にならなくて困ってます。
>
> 1.csvファイル14087件をload
> 2.auto_incrementカラムのmax値は、14087
> 3.続いて、1件をinsert
> 4.auto_incrementカラムのmax値は、16384★
> 5.続いて、1件をinsert
> 6.auto_incrementカラムのmax値は、16385
>
> 4.で、なぜ、こんなにも飛んでしまうのでしょうか?


2通りの可能性が考えられます。

1. DELETE文でテーブルを空にした。

LOADする前にテーブルをDELETE文で空にされてませんでしょうか?
DELETE文などで行を削除した場合、AUTO_INCREMENTカウンタの値が
残ってしまいます。AUTO_INCREMENTカウンタの値を初期値(1)にするには
TRUNCATEする必要があります。

この状態ではAUTO_INCREMENTカウンタの値が大きいのですが、明示的に値を指定すれば
AUTO_INCREMENTカウンタより小さい値でもINSERTすることが可能です。
LOADはCSVファイルから行われたということなので、AUTO_INCREMENTカラムの値も
書かれていたのではないでしょうか。

この後、明示的に値を指定しないでINSERTすると、AUTO_INCREMENTカウンタが
利用されます。

2. CREATE TABLE tbl LIKE orig_tblでテーブルを作成した。

元のテーブルからAUTO_INCREMENTカウンタの値も拾ってきますのでご注意下さい。


今後の検証においては、現在のAUTO_INCREMENTカウンタ値を調べて頂くのが良いと思います。
「SHOW CREATE TABLE テーブル名」または「SHOW TABLE STATUS」コマンドで
AUTO_INCREMENTカウンタ値を表示することができます。

また、もしAUTO_INCREMENT値が意図したものと異なっていた場合には、TRUNCATEで
リセットするか、ALTER TABLEで変更が可能です。

mysql> TRUNCATE テーブル名;

or

mysql> ALTER TABLE テーブル名 AUTO_INCREMENT=1;

ではでは。
--
Mikiya Okuno, MySQL Support Engineer
Sun Microsystems KK, Tokyo, Japan
http://www-jp.mysql.com/


[前][次][番号順一覧][スレッド一覧]

     14933 2009-06-22 11:19 [Takayuki Okada <okad] auto_increment属性について              
     14934 2009-06-22 11:34 ┣[hiroshi morimoto <ma]                                       
     14935 2009-06-22 11:39 ┣[hiroshi morimoto <ma]                                       
     14936 2009-06-22 17:04 ┣[chuuken kenkou <ken_]                                       
     14937 2009-06-22 17:24 ┃┗[Takayuki Okada <okad]                                     
     14938 2009-06-22 19:32 ┗["wabiko.takuma" <wab]                                       
     14940 2009-07-01 11:49  ┗[Takayuki Okada <okad]                                     
->   14941 2009-07-01 14:39   ┗[Mikiya Okuno <Mikiya]                                   
     14942 2009-07-01 18:05    ┗[Takayuki Okada <okad]                                 
     14943 2009-07-01 18:47     ┗[Mikiya Okuno <Mikiya]                               
     14944 2009-07-02 08:56      ┗[Takayuki Okada <okad]                             
     14950 2009-07-06 14:27       ┗[Mikiya Okuno <Mikiya]                           
     14951 2009-07-06 15:20        ┗[Takayuki Okada <okad]                         
     14952 2009-07-06 16:12         ┗[Mikiya Okuno <Mikiya]                       
     14953 2009-07-06 16:26          ┗[Takayuki Okada <okad]