查询问题:只能有一个自动列


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独有的MySQL陷阱。问为什么总是比放弃和重新设计要好得多。
RolandoMySQLDBA 2011年

Answers:


12

如果可以的话,这显然可以与MyISAM作为存储引擎一起使用,而不是InnoDB。

使它起作用的另一种方法是,如果在主键声明中交换queueidx的位置。


1

idx如果您希望拥有queuePK的第一名,也可以提供自己的密钥。请注意该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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.