Problema de consulta: solo puede haber una columna automática


10

¿Puede alguien decirme qué hay de malo con esta definición de tabla?
la versión de mysql es 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
Me gusta esta pregunta (+1 para ti) porque presenta un problema de MySQL que es exclusivo de MyISAM. Preguntar por qué siempre es mucho mejor que darse por vencido y rediseñar.
RolandoMySQLDBA

Respuestas:


12

Aparentemente, esto funcionará con MyISAM como motor de almacenamiento, no con InnoDB, si puede vivir con eso.

Otra forma de hacerlo funcionar es intercambiando lugares de queuey idxen la declaración de clave primaria.


1

También puede dar idxsu propia clave si prefiere tener queueprimero en el PK. Tenga en cuenta la adición de la index(idx)línea:

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

Intente eliminar el campo de cola de la clave primaria. Puede indexar la columna de la cola si lo desea


44
Ese tipo de derrota el punto de la tabla.
Nifle

44
¿Te das cuenta de que eso es lo que el autor de la pregunta intenta evitar?
jcolebrand
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.