[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Postgresql no me indexa nada



Javier Lopez wrote:
> Estoy teniendo un problema con postgresql, ya que no consigo crear
> índices de campos que no sean integer.
> Cada vez que lo intento me devuelve el siguiente error:
> 
>         ERROR: DefineIndex: type _varchar has no default operator class
> NB: Estoy utilizando los debs de la versión 7.0 de La Espiral para
> debian 2.2, y cambiar a la versión 6.5 no es una opción, necesito la
> integridad referencial.
Hola,
Yo también estoy usando postgresql 7.0 + Debian 2.2 y no he tenido
ningún problema creando índices que no sean números enteros. ¿Como los
estarás creando? muestranos un ejemplo.

Te muestro un ejemplo de una tabla que creé sin problema:
   CREATE TABLE "ponencias" ("id" text NOT NULL,
        "titulo" text, "autor" text, "email" text, "informe" int2,
        "tipo" text, "dia" int2, "hora" text, "lugar" text,
        "resumen" text);
El índice es creado automáticamente en el campo "id", debido al comando
NOT NULL.
De todas formas viendo el volcado de la base de datos que me dá pg_dump,
observo que el índice ha sido creado con:

CREATE UNIQUE INDEX "ponencias_id_key" on "ponencias" using btree ( "id"
"text_ops" );

Por el mensaje de error que te dá me parece que debes estar usando
"varchar" para el campo que quieres usar como índice. En postgresql se
recomienda usar "text" en vez de "varchar" pues es mucho mas eficiente
(y como vez en mi ejemplo, existe text_ops pero probablemente nno exista
algo como varchar_ops).

En resumén, cambia "varchar" por "text" que estoy casi seguro que eso te
resolverá tu problema.

Jaime



Reply to: