为什么 PostgreSQL 的 SOCI 回归测试在 Windows 上失败?
Why SOCI regression tests for PostgreSQL fail on Windows?
我在 Windows 10 和 Visual Studio 2015 上构建和测试 SOCI 3.2,使用此批次:
SET PREFIX=..\soci-3.2.3-install
SET POSTGRES_DIR=E:\PostgreSQL.5
cmake^
-G "NMake Makefiles"^
-DCMAKE_BUILD_TYPE=Release^
-DCMAKE_INSTALL_PREFIX=%PREFIX%^
-DSOCI_TESTS=ON^
-DWITH_ODBC=OFF^
-DWITH_POSTGRESQL=ON^
-DPOSTGRESQL_INCLUDE_DIR="%POSTGRES_DIR%\include"^
-DPOSTGRESQL_LIBRARIES="%POSTGRES_DIR%\lib\libpq.lib"^
-DSOCI_POSTGRESQL_TEST_CONNSTR="host=localhost port=5432 dbname=postgres user=eagui"^
..\soci-3.2.3
nmake
nmake test
为了避免VCheaders引起的宏重定义错误,我也在构建前注释了soci-3.2.3\core\soci-platform.h
中的第27行。我确保将 E:\PostgreSQL.5\bin
添加到 PATH
。命令提示符具有管理员权限。
在 运行 批处理之后,我从测试中得到以下输出:
...
3/4 Test #3: soci_postgresql_test .............***Failed 1.37 sec
Start 4: soci_postgresql_test_static
4/4 Test #4: soci_postgresql_test_static ......***Failed 0.17 sec
50% tests passed, 2 tests failed out of 4
Total Test time (real) = 1.63 sec
The following tests FAILED:
3 - soci_postgresql_test (Failed)
4 - soci_postgresql_test_static (Failed)
Errors while running CTest
NMAKE : fatal error U1077: 'echo' : return code '0x8'
Stop.
我已将 PostgreSQL 服务器配置为接受信任连接。服务器中存在 postgres
数据库和 eagui
用户。
知道为什么 PostgreSQL 的测试没有通过以及如何修复它吗?
数据库中必须至少存在用户搜索路径中设置的模式之一。
默认情况下,搜索路径设置为查找以用户命名的模式。这当然可以更改,因此为了查看正在查找哪些模式,SHOW search_path;
命令可以是 运行。对于创建的任何新用户,搜索路径默认设置为 "$user", public
.
在这种情况下,在连接字符串中指定了用户 eagui
,但 postgres
数据库中不存在 eagui
或 public
模式。创建这些模式之一可以使测试通过。
我在 Windows 10 和 Visual Studio 2015 上构建和测试 SOCI 3.2,使用此批次:
SET PREFIX=..\soci-3.2.3-install
SET POSTGRES_DIR=E:\PostgreSQL.5
cmake^
-G "NMake Makefiles"^
-DCMAKE_BUILD_TYPE=Release^
-DCMAKE_INSTALL_PREFIX=%PREFIX%^
-DSOCI_TESTS=ON^
-DWITH_ODBC=OFF^
-DWITH_POSTGRESQL=ON^
-DPOSTGRESQL_INCLUDE_DIR="%POSTGRES_DIR%\include"^
-DPOSTGRESQL_LIBRARIES="%POSTGRES_DIR%\lib\libpq.lib"^
-DSOCI_POSTGRESQL_TEST_CONNSTR="host=localhost port=5432 dbname=postgres user=eagui"^
..\soci-3.2.3
nmake
nmake test
为了避免VCheaders引起的宏重定义错误,我也在构建前注释了soci-3.2.3\core\soci-platform.h
中的第27行。我确保将 E:\PostgreSQL.5\bin
添加到 PATH
。命令提示符具有管理员权限。
在 运行 批处理之后,我从测试中得到以下输出:
...
3/4 Test #3: soci_postgresql_test .............***Failed 1.37 sec
Start 4: soci_postgresql_test_static
4/4 Test #4: soci_postgresql_test_static ......***Failed 0.17 sec
50% tests passed, 2 tests failed out of 4
Total Test time (real) = 1.63 sec
The following tests FAILED:
3 - soci_postgresql_test (Failed)
4 - soci_postgresql_test_static (Failed)
Errors while running CTest
NMAKE : fatal error U1077: 'echo' : return code '0x8'
Stop.
我已将 PostgreSQL 服务器配置为接受信任连接。服务器中存在 postgres
数据库和 eagui
用户。
知道为什么 PostgreSQL 的测试没有通过以及如何修复它吗?
数据库中必须至少存在用户搜索路径中设置的模式之一。
默认情况下,搜索路径设置为查找以用户命名的模式。这当然可以更改,因此为了查看正在查找哪些模式,SHOW search_path;
命令可以是 运行。对于创建的任何新用户,搜索路径默认设置为 "$user", public
.
在这种情况下,在连接字符串中指定了用户 eagui
,但 postgres
数据库中不存在 eagui
或 public
模式。创建这些模式之一可以使测试通过。