PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zmienna Django/PostgreSQL na UUID

type uuid w instrukcji DDL jest skrótem dla SET DATA TYPE uuid . Podręcznik:

varchar_pattern_ops to klasa operatora które zostaną wymienione w komunikacie o błędzie, jeśli masz uuid używając tej klasy operatora w dowolnym indeksie. Zwykle w celu umożliwienia szybszego sortowania, dopasowywania wzorców i warunków zakresu.

Aby naprawić, usuń sprzeczne indeksy, zmień typ danych, a następnie ponownie utwórz indeksy bez specjalnej klasy operatora - jeśli nadal ich potrzebujesz.

Jednak niektóre typowe zapytania, które wykorzystują varchar_pattern_ops index przestanie działać z typem danych uuid zamiast varchar . Podobnie jak dopasowywanie wzorców:

Upewnij się, że naprawiłeś również wszelkie takie zapytania.

@fl0cke wskazał powiązana odpowiedź:

Proponuję nieco inną trasę. Taniej jest upuścić indeks, zmienić typ danych i wtedy utwórz nowy indeks - jeśli nadal jest przydatny.

DROP INDEX tbl_guid_varchar_pattern_ops_idx;

ALTER TABLE tbl ALTER COLUMN guid TYPE uuid USING guid::uuid;

CREATE INDEX tbl_guid_idx ON tbl (guid);

Jak znaleźć obraźliwy indeks?

We współczesnych wersjach Postgresa otrzymujesz istniejące indeksy dla tabeli za pomocą \d tbl w psql.

Aby uzyskać wszystkie kompletne CREATE INDEX zestawienia dla podanej tabeli:

SELECT pg_get_indexdef(indexrelid) || ';' AS idx
FROM   pg_index
WHERE  indrelid = 'public.tbl'::regclass;  -- optionally schema-qualified

Aby uzyskać tylko te, używając varchar_pattern_ops :

SELECT pg_get_indexdef(i.indexrelid) || ';' AS idx
FROM   pg_index i
JOIN   pg_opclass o ON o.oid = ANY (i.indclass)
WHERE  i.indrelid = 'public.big'::regclass
AND    o.opcname = 'varchar_pattern_ops';

Szczegóły:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwrócić zapytanie z funkcji?

  2. Czy mogę dodać ograniczenie UNIQUE do tabeli PostgreSQL po jej utworzeniu?

  3. PostgreSQL konwertuje tablicę zwróconą z funkcji do kolumn

  4. PostgreSQL i dane sekwencyjne

  5. Sortuj agregację tekstu utworzoną za pomocą array_agg w postgresql