Проблема с запросом: может быть только один автоматический столбец

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
Nifle
источник
1
Мне нравится этот вопрос (+1 для вас), потому что он представляет гадж MySQL, который уникален для MyISAM. Спрашивать о том, почему всегда намного лучше, чем сдаться и изменить дизайн.
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
Такого рода победы над точкой таблицы.
Nifle
4
Вы понимаете, что это то, чего пытается избежать аскер?
Jcolebrand