On Tue, Oct  9, 2012 at 09:50:22PM -0600, Chris Ernst wrote:
> Hi all,
> 
> I'm trying to test using pg_upgrade to go from 9.1.6 to 9.2.1 on Ubuntu
> server 10.04.  But when I run pg_upgrade, it tells me I can only run it
> on 8.3 or later.
> 
> Old:
> postgres=# SELECT version();
>                                                     version
> 
> ----------------------------------------------------------------------------------------------------------------
>  PostgreSQL 9.1.6 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real
> (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 64-bit
> (1 row)
> 
> 
> New:
> postgres=# SELECT version();
>                                                     version
> 
> ----------------------------------------------------------------------------------------------------------------
>  PostgreSQL 9.2.1 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real
> (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, 64-bit
> (1 row)
> 
> 
> Yet when I try to run pg_upgrade:
> 
> $ /usr/lib/postgresql/9.2/bin/pg_upgrade -b /usr/lib/postgresql/9.1/bin/
> -d /postgresql/9.1/main -B /usr/lib/postgresql/9.2/bin/ -D
> /postgresql/9.2/main -k -c -v
> Running in verbose mode
> Performing Consistency Checks
> -----------------------------
> Checking current, bin, and data directories                 ok
> Checking cluster versions
> This utility can only upgrade from PostgreSQL version 8.3 and later.
> Failure, exiting
> 
> Any idea what could be going on here?
> 
> Thank you in advance for your help.

That is cetainly odd.  It is using this C code:

    if (GET_MAJOR_VERSION(old_cluster.major_version) < 803)
        pg_log(PG_FATAL, "This utility can only upgrade from PostgreSQL version 
8.3 and later.\n");

which is assigned from this function:

        get_major_server_version(ClusterInfo *cluster)
        {
            FILE       *version_fd;
            char        ver_filename[MAXPGPATH];
            int         integer_version = 0;
            int         fractional_version = 0;
        
            snprintf(ver_filename, sizeof(ver_filename), "%s/PG_VERSION",
                     cluster->pgdata);
            if ((version_fd = fopen(ver_filename, "r")) == NULL)
                return 0;
        
            if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 ||
                sscanf(cluster->major_version_str, "%d.%d", &integer_version,
                       &fractional_version) != 2)
                pg_log(PG_FATAL, "could not get version from %s\n", 
cluster->pgdata);
        
            fclose(version_fd);
        
            return (100 * integer_version + fractional_version) * 100;
        }

Can you show me what is in the PG_VERSION file in the old cluster?  It
should be "9.1".

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to