Küsimus
Anonüümne
(20.11.2023 13:12)
Üritan PgAdminis käivitada PostgreSQL andmebaasi vastu SQL skripti, mis sisaldab VACUUM lauseid ja saan veateate: "ERROR: VACUUM cannot run inside a transaction block". Mida teha?
Vastus (20.11.2023 13:33):
Kui käivitate PgAdminis Query Tool akna kaudu skripti, kus on rohkem kui üks SQL lause, siis paneb PgAdmin need laused automaatselt transaktsiooni e tehingu plokki.
Seega, kui käivitan andmebaasis PgAdmin kaudu laused:VACUUM FULL emp;
VACUUM FULL dept;
, siis tegelikult täidetakseSTART TRANSACTION;
VACUUM FULL emp;
VACUUM FULL dept;
COMMIT;
Võimalikud lahendused:
- käivitada kõik need laused psqlis (saab teha ka PgAdmin kaudu, valides Tools=>PSQL Tool),
- psql neid lauseid omast peast transaktsiooni plokki ei pane,
- käivitada need laused PgAdminis ükshaaval (siis neid ei panda transaktsiooni plokki),
- selleks võib päringu aknas lause valida(selekteerida) ja siis vajutada käivitamise nupule või klahvile F5.