Thread: Problems running PostGreSQL silent install
I have seen many problems like this in the forum, but cannot see a solution for mine... I have created an account with restricted privileges for the service. Everything works fine until I get an error running the silent install. Failed to run initdb: 1! I then check the logfile, and it says The files belonging to this database system will be owned by user "postgres2". This user must also own the server process. The database cluster will be initialized with locale C. initdb: directory "C:/Program Files/PostgreSQL/8.1/data" exists but is not empty If you want to create a new database system, either remove or empty the directory "C:/Program Files/PostgreSQL/8.1/data" or run initdb with an argument other than "C:/Program Files/PostgreSQL/8.1/data". The problem is, that I am trying to install a second instance of PostGreSQL on another port in another location my test computer. Is this possible? Here is my silent install .bat script file msiexec.exe /i postgresql-8.1-int.msi /qr INTERNALLAUNCH=1 ADDLOCAL=server,psql BASEDIR="c:\postgres" SERVICEDOMAIN="%COMPUTERNAME%" SERVICEACCOUNT="postgres2" SERVICEPASSWORD="test" SUPERPASSWORD="o2BS#9798" LISTENPORT=9092
> initdb: directory "C:/Program Files/PostgreSQL/8.1/data" > exists but is not empty If you want to create a new database > system, either remove or empty the directory "C:/Program > Files/PostgreSQL/8.1/data" or run initdb with an argument > other than "C:/Program Files/PostgreSQL/8.1/data". > > > The problem is, that I am trying to install a second instance > of PostGreSQL on another port in another location my test computer. > Is this possible? No, the MSI instlaler only lets you install once instance on each machine. (Unless you are talking different versions, that is). You can, however, install one instance with the MSI installer, and then manually run initdb and pg_ctl register to set up a second service with a different data directory. //Magnus
Thank you for the reply. But then are you saying I don't even really need to use the MSI in the first place? I can just copy the files to a folder. Then run initdb and pg_ctl? I am bundling PostGreSQL with my software package. And will be using Installshield to copy my program files to the client computer. Now can I just get the PostGresql folder, put it where I want, then Run initdb and pg_ctl? -----Original Message----- From: Magnus Hagander [mailto:mha@sollentuna.net] Sent: Friday, October 27, 2006 10:22 PM To: Greg Quinn; pgsql-novice@postgresql.org Cc: pgsql-general@postgresql.org Subject: RE: [GENERAL] Problems running PostGreSQL silent install No, the MSI instlaler only lets you install once instance on each machine. (Unless you are talking different versions, that is). You can, however, install one instance with the MSI installer, and then manually run initdb and pg_ctl register to set up a second service with a different data directory. //Magnus
> Thank you for the reply. > But then are you saying I don't even really need to use the > MSI in the first place? > I can just copy the files to a folder. Then run initdb and pg_ctl? Sure. The MSI is just a convenient way to get everything into place, and to set icons and stuff. > I am bundling PostGreSQL with my software package. And will > be using Installshield to copy my program files to the client > computer. > Now can I just get the PostGresql folder, put it where I > want, then Run initdb and pg_ctl? Yes, certainly. If you just need the backend, you will just need that and possibly set some permissions. You can look at the code to pginstaller (http://pgfoundry.org/projects/pginstaller/) to get details of exactly what it does. Much of the code is to deal with service account verification and creation - if you already have this solved elsewhere, you can probably get around things much easier. //Magnus
msiexec.exe /i postgresql-8.1-int.msi /log resultado.txt /qr INTERNALLAUNCH=1 ADDLOCAL=server,psql,pgadmin,psqlodbc BASEDIR="c:\postgres" CREATESERVICEUSER=1 SERVICEDOMAIN="%COMPUTERNAME%" SERVICEACCOUNT="postgres" SERVICEPASSWORD="test" SUPERUSER="algun_usuario" SUPERPASSWORD="alguna_contrasena"
Repito: me funcionó muy bien!!!.
Tengan en cuenta que en la sección ADDLOCAL no pude agregar los "docs", ya que obtenía el mensaje "silent installation of 8.3 fails with error code 2711", y en el archivo LOG que se genera se obtuvo la siguiente descripción del error:
DEBUG: Error 2711: The specified Feature name ('docs') not found in Feature Table.
DEBUG: Error 2867: The error dialog property is not set
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2867. The arguments are: , ,
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2711. The arguments are: docs, ,
MSI (c) (CC:A8) [11:54:11:343]: Product: PostgreSQL 8.1 -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2711. The arguments are: docs, ,
Pueden probar con otras opciones para ver si les sigue funcionando, pero les aseguro que con estas líneas me funcionó muy bien!. En tal caso que no les funciones con SERVICEACCOUNT="postgres" y SERVICEPASSWORD="test", prueben con: SERVICEACCOUNT="postgres3" SERVICEPASSWORD="test3", es decir, con un número al final de dichos valores.
Un agradecimiento a los usuarios Greg Quinn y Magnus Hagander, de quienes obtuve ideas para hacer funcionar este script. Saludos!.