Chcę załadować rozszerzenie cube, ale może być już załadowany. Ja również

CREATE EXTENSION IF NOT EXISTS cube;

Dokumenty Powiedzmy, że gdyby nie istnieje, nie powinien rzuć błąd. Ale to:

ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] ERROR:  duplicate key value violates unique constraint "pg_extension_name_index"
ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] DETAIL:  Key (extname)=(cube) already exists.
ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] STATEMENT:  
ff_postgres_1  |                    CREATE EXTENSION IF NOT EXISTS cube;

Co tu robię źle? Działam PostgreSQL 12.3

0
biryulin04 26 lipiec 2020, 21:31

1 odpowiedź

Najlepsza odpowiedź

Możesz to uzyskać z wyścigami. Jeśli dwie sesje próbują utworzyć rozszerzenie w tym samym czasie, ani {x0}} nie może jeszcze zobaczyć drugiego, więc oba przejść przez ten krok. Pierwszy, który otrzymał swój wiersz do wygranych do pg_extension, a inne bloki. A potem, gdy pierwsza sesja zobowiązuje się, drugi odblokowani odblokowani w tej wiadomości.

3
jjanes 26 lipiec 2020, 21:48