Masalah kueri: hanya ada satu kolom otomatis

10

Dapatkah seseorang tolong beri tahu saya apa yang salah dengan definisi tabel ini.
versi mysql adalah 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
Nifle
sumber
1
Saya suka pertanyaan ini (+1 untuk Anda) karena menyajikan gotcha MySQL yang unik untuk MyISAM. Bertanya tentang mengapa selalu jauh lebih baik daripada menyerah dan mendesain ulang.
RolandoMySQLDBA

Jawaban:

12

Ini tampaknya akan bekerja dengan MyISAM sebagai mesin penyimpanan, bukan InnoDB, jika Anda bisa hidup dengan itu.

Cara lain untuk membuatnya berfungsi adalah jika Anda bertukar tempat queuedan idxdalam deklarasi kunci utama.

Gustav Barkefors
sumber
1

Anda juga dapat memberikan idxkunci sendiri jika Anda lebih suka memiliki yang queuepertama di PK. Perhatikan penambahan index(idx)baris:

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)
);
Matius Baca
sumber
-1

Coba hapus bidang antrian dari kunci utama. Anda dapat mengindeks kolom antrian jika Anda mau

Prathab K
sumber
4
Jenis kekalahan seperti itu di atas meja.
Nifle
4
Apakah Anda menyadari bahwa itulah yang ingin dihindari si penanya?
jcolebrand