Re: Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log - Mailing list pgsql-general

From Bruce Momjian
Subject Re: Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log
Date
Msg-id 20140807164301.GB14724@momjian.us
Whole thread Raw
In response to Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log  (Russell Keane <Russell.Keane@inps.co.uk>)
Responses Re: Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log  (Russell Keane <Russell.Keane@inps.co.uk>)
List pgsql-general
On Thu, Aug  7, 2014 at 09:42:13AM +0100, Russell Keane wrote:
> Hi,
>
>
>
> We’re trying to upgrade a 9.0 database to 9.3 using pg_upgrade. The upgrade
> must be automated so a manual pg_dump / pg_restore is not an option.
>
> We use the following command:
>
> D:\PostgreSQL\9.3\Data>"c:\Program Files (x86)\PostgreSQL\9.3\bin\
> pg_upgrade.exe" -d "D:\PostgreSQL\Data" -D "D:\PostgreSQL\9.3\Data" -b "C:\
> Program Files (x86)\PostgreSQL\9.0\bin" -B "C:\Program Files (x86)\PostgreSQL\
> 9.3\bin" -u postgres -c -P 5432
>
>
>
> This is on a Windows 7 64 bit environment.
>
> We’ve given the postgres windows user full permissions to all folders involved
> and are running the upgrade in a cmd prompt opened with runas  /user:postgres
>
>
>
> The upgrade works all the way up until the final hurdle where, in the
> pg_upgrade_utility.log the following statement appears:
>
> command: ""C:\Program Files (x86)\PostgreSQL\9.3\bin/initdb" --sync-only "D:\
> PostgreSQL\9.3\Data" >> "pg_upgrade_utility.log" 2>&1"
>
> syncing data to disk ... initdb: could not open file "D:/PostgreSQL/9.3/Data/
> pg_upgrade_utility.log": Permission denied

Uh, it would appear you are running pg_upgrade from _inside_ the 9.3
data directory.  That should work, but it would probably be better to
run it in another directory where you also have write permission.  I
think the problem is that initdb --sync-only is syncing those files to
disk as you are writing to the log file.

We have had Windows problems of two processes writing to the same file,
but that is usually a different error message, e.g.

     * For some reason, Windows issues a file-in-use error if we write data to
     * the log file from a non-primary thread just before we create a
     * subprocess that also writes to the same log file.  One fix is to sleep
     * for 100ms.  A cleaner fix is to write to the log file _after_ the
     * subprocess has completed, so we do this only when writing from a
     * non-primary thread.  fflush(), running system() twice, and pre-creating
     * the file do not see to help.

I think that returns a "share violation" error.

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

  + Everyone has their own god. +


pgsql-general by date:

Previous
From: Shaun Thomas
Date:
Subject: Re: dump/restore with a hidden dependency?
Next
From: Steve Clark
Date:
Subject: Re: order by question