クエリの問題:自動列は1つしかありません


10

誰かがこのテーブル定義の何が問題になっているのか教えてください。
mysqlのバージョンは5.1.52-logです

root@localhost spoolrdb> create table spoolqueue (
                             queue int,
                             idx bigint not null auto_increment,
                             status smallint,
                             querystring varchar(2048),
                             contenttype varchar(255),
                             characterencoding varchar(16),
                             body text,
                             primary key(queue,idx)
                             );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

1
MyISAMに固有のMySQLの落とし穴を提示するため、この質問(あなたに+1)が好きです。理由を尋ねることは、あきらめたり再設計するよりも常にはるかに優れています。
RolandoMySQLDBA 2011年

回答:


12

可能であれば、これはInnoDBではなく、ストレージエンジンとしてMyISAMで動作します。

あなたがの場所入れ替える場合は仕事にそれを得るための別の方法はあるqueueidx主キーの宣言では。


1

最初にPK idxを取得する場合は、独自のキーを指定することもできますqueueindex(idx)行の追加に注意してください。

create temporary table spoolqueue (
    queue int,
    idx bigint not null auto_increment,
    status smallint,
    querystring varchar(2048),
    contenttype varchar(255),
    characterencoding varchar(16),
    body text,
    primary key(queue,idx),
    index(idx)
);

-1

主キーからキューフィールドを削除してみてください。必要に応じて、キュー列にインデックスを付けることができます


4
そのようなことはテーブルのポイントを打ち負かします。
Nifle

4
それが質問者が避けようとしていることを知っていますか?
jcolebrand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.