sql >> Databáze >  >> RDS >> PostgreSQL

chyba postgresql PANIC:nelze najít platný záznam kontrolního bodu

Hledá záznam kontrolního bodu v protokolu transakcí, který pravděpodobně neexistuje nebo je poškozený. Zda se jedná o tento případ, můžete zjistit spuštěním:

# Postgres >= 10
pg_resetwal DATADIR

# Postgres < 10
pg_resetxlog DATADIR

Pokud je protokol transakcí poškozen, zobrazí se zpráva jako:

Databázový server nebyl vypnut čistě. Resetování protokolu transakcí může způsobit ztrátu dat. Pokud chcete přesto pokračovat, použijte -f vynutit reset.

Poté můžete postupovat podle pokynů a spustit pomocí -f vynutit aktualizaci:

# Postgres >= 10
pg_resetwal -f DATADIR

# Postgres < 10
pg_resetxlog -f DATADIR 

To by mělo resetovat transakční protokol, ale mohlo by to nechat vaši databázi v neurčitém stavu, jak je vysvětleno v dokumentaci PostgreSQL na pg_resetwal :

Pokud pg_resetwal si stěžuje, že nemůže určit platná data pro pg_control , můžete jej vynutit, aby pokračoval, zadáním -f (vynutit) možnost. V tomto případě budou chybějící údaje nahrazeny věrohodnými hodnotami. Lze očekávat, že většina polí se bude shodovat, ale pro pole OID, příští ID transakce a epocha, ID a offset další multitransakce a výchozí umístění WAL může být zapotřebí ruční pomoc. Tato pole lze nastavit pomocí níže uvedených možností. Pokud nejste schopni určit správné hodnoty pro všechna tato pole, -f lze stále používat, ale s obnovenou databází je třeba zacházet s ještě větší nedůvěrou než obvykle:okamžitý výpis a opětovné načtení je nutností. Než provedete výpis, neprovádějte v databázi žádné operace upravující data, protože jakákoli taková akce pravděpodobně zhorší korupci.



  1. 5 chyb v návrhu databáze, kterým je třeba se vyhnout

  2. FORMAT() Příklady v MySQL

  3. Jaký je rozdíl mezi Float a Numeric/Decimal na SQL Server - SQL Server / T-SQL výukový program, část 33

  4. Jak povolit rozšíření pro oci8 (Oracle) v php.ini - PHP Upozornění:Spuštění PHP:v neznámém na řádku 0