Archiwum dla kategorii ‘PostgreSQL’
2022-11-05
SERIAL generuje kolejne wartości, zazwyczaj używane jako identyfikator w tabelach. Np. tutaj kolumna id ma automatycznie nadawaną wartość:
|
CREATE TABLE t1 (id SERIAL, name TEXT ); |
a tutaj id trzeba podawać samodzielnie:
|
CREATE TABLE t2 (id INT, name TEXT ); |
Co zrobić, jeśli chcielibyśmy w zapytaniu SQL wykorzystać wartość, która została wygenerowana w kolejnym zapytaniu? Oto propozycja nr 1 Polecenie INSERT wstawia nowy rekord. Podczas tego wstawiania generowana jest […]
2022-11-03
W PG Admin, po wybraniu polecenia „Restore database” pojawia się czasami komunikat o błędzie „Utility not found” Co wtedy zrobić? Należy w menu PGAdmin wybrać polecenie File >> Preferences Dalej poszukaj w drzewku po lewej stronie odszukaj Paths >> Binary Paths Teraz po prawej stronie okna, w dolnej części zatytyłowanej „PostgreSQL Binary Path” odszukaj numeru […]
2022-10-19
Powiedzmy, że aplikacja ma tabelę służącą do przechowywania uprawnień o następującej strukturze:
|
CREATE TABLE RolePermission (RoleId INT, PermissionId INT, OnSite INT, OffSite INT); ALTER TABLE RolePermission ADD PRIMARY KEY (RoleId, PermissionId); |
Kolumna RoleId to identyfikator użytkownika (liczba, która wskazuje na nazwę użytkownika przechowywaną prawdopodobnie w innej tabeli). Kolumna PermissionId to identyfikator uprawnienia (również liczba, która wskazuje na nazwę uprawnienia przechowywaną w innej tabeli). Chodzi o skopiowanie uprawnień jednego użytkownika, a ponieważ pracujemy na […]
2022-08-20
Pozwól, że nie będę tłumaczył skąd bierze się problem wraparound w PostgreSQL. Faktem jest jednak, że śpi się lepiej, kiedy masz świadomość, że taki problem Ci nie zagraża. Jak więc sprawdzić, czy jeszcze daleko do zderzenia z wraparound? Oto query, które można uruchomić na bazie, żeby sprawdzić, co się dzieje z identyfikatorami transakcji:
|
SELECT </code><code _ngcontent-c17="" class="ng-star-inserted"> datname, </code><code _ngcontent-c17="" class="ng-star-inserted"> age(datfrozenxid) AS frozen_xid_age, </code><code _ngcontent-c17="" class="ng-star-inserted"> ROUND( </code><code _ngcontent-c17="" class="ng-star-inserted"> 100 *( </code><code _ngcontent-c17="" class="ng-star-inserted"> age(datfrozenxid)/ 2146483647.0 :: float </code><code _ngcontent-c17="" class="ng-star-inserted"> ) </code><code _ngcontent-c17="" class="ng-star-inserted"> ) consumed_txid_pct, </code><code _ngcontent-c17="" class="ng-star-inserted"> current_setting('autovacuum_freeze_max_age'):: int - age(datfrozenxid) AS remaining_aggressive_vacuum </code><code _ngcontent-c17="" class="ng-star-inserted">FROM </code><code _ngcontent-c17="" class="ng-star-inserted"> pg_database </code><code _ngcontent-c17="" class="ng-star-inserted">WHERE </code><code _ngcontent-c17="" class="ng-star-inserted"> datname NOT IN ( </code><code _ngcontent-c17="" class="ng-star-inserted"> 'cloudsqladmin', 'template0', 'template1' </code><code _ngcontent-c17="" class="ng-star-inserted"> ); |
Query […]
2022-08-10
Błąd pojawia się przy poleceniu
|
pg_dump "host=... port=5432 dbname=... user=... password=... sslmode=require" -s -O > db_schema.sql |
Rzeczywiście pg_dump był dość stary – 9.2.24, a serwer – też nie najnowszy – 11.16 Na serwerze było jednak zainstalowanych więcej wersji narzędzi Postgresa:
|
find / -name pg_dump -type f 2>/dev/null |
Poz znalezieniu odpowiedniej wersji, można już odwołać się do konkretnej wersji pg_dump:
|
/usr/psql-11/pg_dump "host=... port=5432 dbname=... user=... password=... sslmode=require" -s -O > db_schema.sql |
2022-07-03
Świeżo po instalacji znakomite narzędzie jakim jest PGAdmin4 nieco rozczarowało, bo działało okropnie wolno… Oto co pomogło (przynajmniej w pewnym stopniu). Domyślnie serwer postgresql nasluchiwal na porcie 127.0.0.1 i w tym przypadku to śmiało wystarczało 🙂 Polecenie
|
show listen_addresses; listen_addresses ------------------ localhost |
pokazywało tylko adres localhost. Gdzieś jednak znalazłem info, żeby przełączyć go również na obslugę ipv6:
|
alter system set listen_addresses = '127.0.0.1,::1'; ALTER SYSTEM |
Po […]
2022-07-03
PGAdmin4 to aplikacja webowa stworzona w Python-Flask pozwalajaca na prace z baza danych PostgreSQL w interfejsie graficznym. Oto jak zainstalowac PGAdmin4 na Ubuntu: Jak zwykle należy rozpocząć od aktualizacji: sudo apt update Teraz podłączamy repozytorium z PGAdmin4: curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add sudo sh -c ‚echo „deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main” > /etc/apt/sources.list.d/pgadmin4.list && […]