Subject: could not read block 0 in file Error

From: Sbob <[email-masked]>
Date: Fri, 22 Apr 2022 14:23:00 -0600

Hi all;

We had an issue with a PostgreSQL v12 cluster. Not sure all of the 
history as I was pulled in late, however we were seeing that the db 
would not start due to WAL inconsistencies, was throwing an error about 
could not find wal records.

So we ran a pg_resetwal -f -D [data dir]

we are dumping (via pg_dump) all the databases in the broken cluster and 
I will restore them to a new cluster,

however in one of the databases, for one of the tables we are getting this:

pg_dump: error: Dumping the contents of table "bigtable" failed: 
PQgetResult() fai
led.
pg_dump: error: Error message from server: ERROR:  could not read block 
0 in file "base/6328739/6340053": read only 0 of 8192 bytes
pg_dump: error: The command was: COPY public.bigtable (recordid, 
containerid, record_type, description, overlaygroup) TO stdout;

Is there any way to recover?

Thanks in advance

---

From: Karl Denninger <[email-masked]>
Date: Fri, 22 Apr 2022 16:29:42 -0400

On 4/22/2022 16:23, Sbob wrote:
> would not start due to WAL inconsistencies, was throwing an error 
> about could not find wal records.
>
> we are dumping (via pg_dump) all the databases in the broken cluster 
> and I will restore them to a new cluster,
>
> pg_dump: error: Error message from server: ERROR:  could not read 
> block 0 in file "base/6328739/6340053": read only 0 of 8192 bytes
Is the file physically there and can you "cat" it to /dev/null? It's 
hard to read what doesn't exist or produces a hard error from the 
filesystem (e.g. disk error.)

-- 
Karl Denninger
[email-masked]
/The Market Ticker/
/[S/MIME encrypted email preferred]/

---

From: Laurenz Albe <[email-masked]>
Date: Fri, 22 Apr 2022 23:22:35 +0200

On Fri, 2022-04-22 at 14:23 -0600, Sbob wrote:
> pg_dump: error: Dumping the contents of table "bigtable" failed: PQgetResult() failed. 
> pg_dump: error: Error message from server: ERROR:  could not read block 0 in file "base/6328739/6340053": read only 0 of 8192 bytes 
> pg_dump: error: The command was: COPY public.bigtable (recordid, containerid, record_type, description, overlaygroup) TO stdout;
> 

No.  The file is obviously empty, so the data in that table are lost.

Your only hope is a good backup.

Yours,
Laurenz Albe