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

Responder a