2009年7月 1日

[mysql 14940] Re: auto_increment属性について

我彦様
皆様

ご返信が遅れました。申し訳ございません。
検証ありがとうございました>我彦様

その後、仕様上は、単一のユニークでないといけないとのことから、
構成を見直したうえ、いろいろと検証をやってみましたが、

下記の手順できれいな連番にならなくて困ってます。

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.で、なぜ、こんなにも飛んでしまうのでしょうか?

以上です。よろしくお願いいたします。

--------------------
Mon, 22 Jun 2009 19:32:43 +0900
>こんにちは。我彦と申します。
>私はドキュメントに記載を見つけられませんでした。
>仕様かもしれません。バグかもしれません。
>
>試す限り、以下の結果は得ました:
>
>-- failed
>CREATE TABLE okatest (
> col_a BIGINT AUTO_INCREMENT NOT NULL
>,col_b CHAR(4) NOT NULL
>,PRIMARY KEY ( col_b,col_a )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- failed
>CREATE TABLE okatest (
> col_b CHAR(4) NOT NULL
>,col_a BIGINT AUTO_INCREMENT NOT NULL
>,PRIMARY KEY ( col_b,col_a )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- success
>CREATE TABLE okatest (
> col_b CHAR(4) NOT NULL
>,col_a BIGINT AUTO_INCREMENT NOT NULL
>,PRIMARY KEY ( col_a,col_b )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- success
>CREATE TABLE okatest (
> col_b CHAR(4) NOT NULL
>,col_a BIGINT AUTO_INCREMENT NOT NULL UNIQUE
>,PRIMARY KEY ( col_b,col_a )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- success
>CREATE TABLE okatest (
> col_b CHAR(4) NOT NULL
>,col_a BIGINT NOT NULL
>,PRIMARY KEY ( col_b,col_a )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- success
>CREATE TABLE okatest (
> col_a BIGINT AUTO_INCREMENT NOT NULL
>,col_b CHAR(4) NOT NULL
>,PRIMARY KEY ( col_a,col_b )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>-- success
>CREATE TABLE okatest (
> col_a BIGINT AUTO_INCREMENT NOT NULL UNIQUE
>,col_b CHAR(4) NOT NULL
>,PRIMARY KEY ( col_b,col_a )
>) ENGINE = InnoDB;
>SHOW TABLES;
>DROP TABLE okatest;
>
>feature request を送ってはいかがでしょう。
>以上、宜しくお願いします。
>
>Takayuki Okada wrote:
>> こんにちは。
>> 岡田と申します。
>>
>> 複数カラムのPKをもち、かつ、
>> PKのうちひとつのカラムに自動採番(auto_increment)
>> させるテーブルを作成したいのですが、
>> (1)だとエラーになり、(2)だと正常に作成されます。
>>
>> 並びとしては、(1)にしたいのですが、仕様上できないのでしょうか?
>>
>>
>> (1)
>> mysql> CREATE TABLE okatest (
>> -> col_b CHAR(4) NOT NULL
>> -> ,col_a BIGINT AUTO_INCREMENT NOT NULL
>> -> ,PRIMARY KEY (
>> -> col_b,col_a
>> -> )
>> -> ) ENGINE = InnoDB;
>> ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
>>
>> (2)
>> mysql> CREATE TABLE okatest (
>> -> col_a BIGINT AUTO_INCREMENT NOT NULL
>> -> ,col_b CHAR(4) NOT NULL
>> -> ,PRIMARY KEY (
>> -> col_a,col_b
>> -> )
>> -> ) ENGINE = InnoDB;
>> Query OK, 0 rows affected (0.27 sec)
>>


投稿者 xml-rpc : 2009年7月 1日 11:49
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86302
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。