bucardo / dbdpg

Perl Postgres driver DBD::Pg aka dbdpg
48 stars 35 forks source link

Tests fail to start new DB: pg_ctl: unrecognized operation mode #106

Open ShadowWayve opened 1 year ago

ShadowWayve commented 1 year ago

I'm trying to install DBD::Pg on a Windows 11 machine (64-bit). The installation fails every time because the tests fail.

Installation command: cpanm DBD::Pg@3.16.0 --quiet Console error message: ! Installing DBD::Pg failed. See C:\Users\[username]\.cpanm\work\1669705333.8180\build.log for details. Retry with --force to force install it.

Last several lines from the build.log file:

t/00_signature.t ....... skipped: Set the environment variable TEST_SIGNATURE to enable this test
t/00basic.t ............ ok
Please wait, creating new database (version 14.5) for testing
pg_ctl: unrecognized operation mode "C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/data/socket'"
Try "pg_ctl --help" for more information.
# 
# DBI                         Version 1.643
# DBD::Pg                     Version 3.16.0
# Perl                        Version 5.32.1
# OS                          MSWin32
# PostgreSQL (compiled)       ?
# PostgreSQL (target)         ?
# PostgreSQL (reported)       ?
# Default port                ?
# DBI_DSN                     ?
# DBI_USER                    <not set>
# Test schema                 dbd_pg_testschema
# LANG                        C
# Adjusted:                   initdb
# Error was: Could not startup new database (pg_ctl -o '-k C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/data/socket' -l C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/dbdpg_test.logfile -D C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/data start) () ()
Bailout called.  Further testing stopped:  Cannot continue: connection failed
FAILED--Further testing stopped: Cannot continue: connection failed
gmake: *** [Makefile:983: test_dynamic] Error 255
-> FAIL Installing DBD::Pg failed. See C:\Users\[username]\.cpanm\work\1669705333.8180\build.log for details. Retry with --force to force install it.

Additional info about my machine:

I've never used PostgreSQL before, so feel free to share as much "obvious" beginner information with me as you want. I won't think that you are being condescending. 😄

esabol commented 1 year ago

I haven't used a Windows computer in over 25 years, so take what I write with a grain of salt, but, based on my googling, I think the pg_ctl: unrecognized operation mode error means you need to run the tests in a shell with administrator privileges, or at least that's what someone wrote on the pgsql-novice(at)postgresql(dot)org mailing list.

ShadowWayve commented 1 year ago

I haven't used a Windows computer in over 25 years, so take what I write with a grain of salt, but, based on my googling, I think the pg_ctl: unrecognized operation mode error means you need to run the tests in a shell with administrator privileges, or at least that's what someone wrote on the pgsql-novice(at)postgresql(dot)org mailing list.

I guess I should have mentioned that I was running the command in an elevated PowerShell command prompt (powershell.exe). I tried executing cpanm DBD::Pg@3.16.0 --quiet in an elevated cmd.exe instance just now too. Same error. 😞

Thank you for sharing your hunch, though!! Much appreciated.

ShadowWayve commented 1 year ago

Something else I should have shared:

The "socket" folder mentioned in the error message "pg_ctl: unrecognized operation mode "C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/data/socket'" doesn't exist on my machine. Is that socket folder supposed to be created on the fly later, or should it exist at the time this error is hit?

Other folders that do exist at "C:/Users/[username]/.cpanm/work/1669705333.8180/DBD-Pg-3.16.0/dbdpg_test_database/data/":

Files that exist in the data folder:

A total of 22 folders & files.

turnstep commented 1 year ago

This means that pg_ctl is not getting the final argument, 'start', as probably the other arguments are somehow intercepting it. Does the actual username contain spaces or anything odd? You could try from the command line and putting the "start" as the very first argument, and seeing if the output can give us a clue where the problem is.