Re: Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Russell Keane <Russell(dot)Keane(at)inps(dot)co(dot)uk>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log
Date: 2014-08-07 16:43:01
Message-ID: 20140807164301.GB14724@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ Everyone has their own god. +

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Shaun Thomas 2014-08-07 16:43:06 Re: dump/restore with a hidden dependency?
Previous Message Steve Clark 2014-08-07 16:42:36 Re: order by question