Thread: pg_dump 17 produces files incompatible with older server versions

pg_dump 17 produces files incompatible with older server versions

From
Sam Kidman
Date:
Hello

We're developing a rails application and part of our development
workflow involves dumping out the database schema using pg_dump, which
is restored whenever we drop and create our development database.

As of version 17 we now have SET transaction_timeout = 0 in the schema file.

Unfortunately we use the latest version of the client tools (ie
pg_dump and kin) but we run the same database server version as we use
in production (12) and so now we're unable to import our database
schema with the error below:

ERROR:  unrecognized configuration parameter "transaction_timeout"

It might be easier for us if we could configure pg_dump to _not_
output setting runtime parameters - they're not that important for the
use case of applying a schema to a database for local development.

Are there any other solutions to this issue? It could be quite
troublesome for us as we have a few different postgres server versions
in use in different applications but we use the same set of client
tools for all of them.

Best,

-- 

Sam Kidman

Web Developer

Melbourne

0498 592 582
sam@fresho.com
www.fresho.com



Re: pg_dump 17 produces files incompatible with older server versions

From
"David G. Johnston"
Date:
On Wed, Oct 2, 2024, 11:17 Sam Kidman <sam@fresho.com> wrote:

Unfortunately we use the latest version of the client tools (ie
pg_dump and kin) but we run the same database server version as we use
in production (12) and so now we're unable to import our database
schema with the error below:

You are operating in an unsupported manner and there is no goal to support it, aside from psql.

David J.

Re: pg_dump 17 produces files incompatible with older server versions

From
Adrian Klaver
Date:
On 10/1/24 22:23, Sam Kidman wrote:
> Hello
> 
> We're developing a rails application and part of our development
> workflow involves dumping out the database schema using pg_dump, which
> is restored whenever we drop and create our development database.
> 
> As of version 17 we now have SET transaction_timeout = 0 in the schema file.
> 
> Unfortunately we use the latest version of the client tools (ie
> pg_dump and kin) but we run the same database server version as we use
> in production (12) and so now we're unable to import our database
> schema with the error below:

https://www.postgresql.org/docs/current/app-pgdump.html

"Also, it is not guaranteed that pg_dump's output can be loaded into a 
server of an older major version — not even if the dump was taken from a 
server of that version. Loading a dump file into an older server may 
require manual editing of the dump file to remove syntax not understood 
by the older server. "

Use the Postgres 12 version of pg_dump to dump if you want to restore to 
Postgres 12 instance.

> 
> ERROR:  unrecognized configuration parameter "transaction_timeout"

Did the above actually stop the restore?

> 
> It might be easier for us if we could configure pg_dump to _not_
> output setting runtime parameters - they're not that important for the
> use case of applying a schema to a database for local development.
> 
> Are there any other solutions to this issue? It could be quite
> troublesome for us as we have a few different postgres server versions
> in use in different applications but we use the same set of client
> tools for all of them.
> 
> Best,
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com




Re: pg_dump 17 produces files incompatible with older server versions

From
Daniel Gustafsson
Date:
> On 2 Oct 2024, at 07:23, Sam Kidman <sam@fresho.com> wrote:

> Are there any other solutions to this issue? It could be quite
> troublesome for us as we have a few different postgres server versions
> in use in different applications but we use the same set of client
> tools for all of them.

This is per design of pg_dump, the documentation states the following:

    "it is not guaranteed that pg_dump's output can be loaded into a server of
    an older major version — not even if the dump was taken from a server of
    that version.  Loading a dump file into an older server may require manual
    editing of the dump file to remove syntax not understood by the older
    server."

Running the appropriate version of pg_dump for the target cluster, or applying
manual (or scripted) editing of the dump file is the option.

--
Daniel Gustafsson