Проблема запитів: може бути лише один стовпець авто


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
Мені подобається це запитання (+1 для вас), оскільки воно представляє унікальний для MyISAM gotcha MySQL. Запитання про те, чому завжди набагато краще, ніж відмовитися і переробити дизайн.
RolandoMySQLDBA

Відповіді:


12

Це, мабуть, буде працювати з MyISAM як двигуном зберігання даних, а не InnoDB, якщо ви зможете з цим жити.

Ще один спосіб примусити його працювати, якщо ви поміняєте місцями queueта idxв декларації первинного ключа.


1

Ви також можете дати idxсвій власний ключ, якщо ви хочете мати queueперший в ПК. Зверніть увагу на додавання index(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
Цей вид перемагає точку таблиці.
Ніфле

4
Чи усвідомлюєте ви, що цього намагається уникнути запитувач?
jcolebrand
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.