From: | Russell Keane <Russell(dot)Keane(at)inps(dot)co(dot)uk> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
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-12 09:59:16 |
Message-ID: | 8D0E5D045E36124A8F1DDDB463D548557D3C2F2155@mxsvr1.is.inps.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
-----Original Message-----
From: Bruce Momjian [mailto:bruce(at)momjian(dot)us]
Sent: 07 August 2014 17:43
To: Russell Keane
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] Upgrading 9.0 to 9.3 - permission denied to pg_upgrade_utility.log
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. +
Excellent! That's fixed it for us.
Thanks Bruce,
From | Date | Subject | |
---|---|---|---|
Next Message | Rémi Cura | 2014-08-12 10:07:53 | Re: pg_advisory_lock problem |
Previous Message | Ramesh T | 2014-08-12 09:50:05 | Re: pgcluu |