Search Postgresql Archives

Re: pg_upgrade not detecting version properly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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  <bruce@xxxxxxxxxx>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

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


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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux