Sorgu sorunu: Yalnızca bir otomatik sütun olabilir


10

Birisi bana bu tablo tanımında neyin yanlış olduğunu söyleyebilir mi?
mysql sürümü 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
Bu soruyu seviyorum (sizin için +1) çünkü MyISAM'a özgü bir MySQL gotcha sunuyor. Nedenini sormak her zaman vazgeçmek ve yeniden tasarlamaktan daha iyidir.
RolandoMySQLDBA

Yanıtlar:


12

Görünüşe göre MyISAM ile InnoDB değil, depolama motoru olarak çalışacaktır.

Eğer yerlerini değiştirmek durumunda işe almak için başka bir yoldur queueve idxbirincil anahtar bildiriminde.


1

İlk önce idxPK'da olmayı tercih ederseniz, kendi anahtarını da verebilirsiniz queue. İlave Not index(idx)hattı:

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

Kuyruk alanını birincil anahtardan kaldırmayı deneyin. İsterseniz kuyruk sütununu dizine ekleyebilirsiniz


4
Bu tür masanın noktasını yener.
Nifle

4
Askerin kaçınmaya çalıştığının farkında mısın?
jcolebrand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.