Thread: postgres block_size problem
Hi All,
We were getting the following error on executing a COPY command on postgres8.2.0.
SQL execution failed, Internal error. SQL Statement: (COPY command failed with error: ERROR: row is too big: size 8200, maximum size 8136)
So, in order to fix the error we tried increasing the block size to 16k and recompiled the postgres library. The problem at hand was resolved with the new postgres library and we were now able to populate data for the mentioned query successfully. However, this experiment fails when we tried to run the new postgres on data directory generated with 8k block size which is likely to occur during an upgrade with postgres log showing the following error:
2008-12-30 14:57:33 IST DETAIL: The database cluster was initialized with BLCKSZ 8192, but the server was compiled with BLCKSZ 16384.
2008-12-30 14:57:33 IST HINT: It looks like you need to recompile or initdb.
What could be the possible solution to this?
Thanks,
Santosh.
This email and any attachments may contain legally privileged and/or confidential information of Starent Networks, Corp. and is intended only for the individual or entity named in the message. The information transmitted may not be used to create or change any contractual obligations of Starent Networks, Corp. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this e-mail and its attachments by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify the sender immediately -- by replying to this message or by sending an email to postmaster@starentnetworks.com -- and destroy all copies of this message and any attachments without reading or disclosing their contents. Thank you.
Bhujbal, Santosh wrote: > 2008-12-30 14:57:33 IST DETAIL: The database cluster was initialized > with BLCKSZ 8192, but the server was compiled with BLCKSZ 16384. > > 2008-12-30 14:57:33 IST HINT: It looks like you need to recompile or > initdb. This error message tells you the answer. You can't run PostgreSQL with a data directory that was initialized with a different block size. You will need to dump and reload the database. You really shouldn't be hitting the 8k row size limit anyway. PostgreSQL uses out-of-line TOAST storage for large values, so the only way you're likely to be hitting it is by having absurd numbers of small fields in your tables (or maybe a custom data type for which you've not implemented TOAST support?). If you have that many fields in your tables it might be time to look at your schema design. -- Craig Ringer