本文记录了如何在Mac系统上从零开始编译postgreSQL驱动。
系统以及设备信息:
sequoia 14.3
Mac M1
步骤
确保数据库客户端已安装
新建build文件夹,使用以下命令编译sql驱动。以下命令的含义是:用 Qt 6.5.3 的源码,只编译 QSql 驱动插件(QPSQL),并准备安装到现有 Qt 安装目录中
qt-cmake -G Ninja /Users/username/Qt/6.5.3/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/username/Qt/6.5.3/macos -DPostgreSQL_ROOT=/opt/homebrew/opt/postgresql@14 -DQT_GENERATE_SBOM=OFF -DQT_BUILD_IS_SUBDIR=ON -DPLUGINS_ONLY=ON -Dsql_psql=ON -Dsql_sqlite=OFF -DCMAKE_PREFIX_PATH=/Users/goodusernameboy/Qt/6.5.3/macos编译完成后先使用ninja命令,然后再使用ninja install命令将驱动安装到Qt目录。
可能遇到的问题
SBOM error
CMake Error at /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1405 (message): No SBOM project name was set. Call Stack (most recent call first): /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1395 (_qt_internal_sbom_get_root_project_name_lower_case) /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1502 (_qt_internal_sbom_get_root_project_name_for_spdx_id) /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1469 (_qt_internal_sbom_generate_target_package_spdx_id) /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1242 (_qt_internal_sbom_record_target_spdx_id) /opt/homebrew/lib/cmake/Qt6/QtSbomHelpers.cmake:195 (_qt_internal_extend_sbom) /opt/homebrew/lib/cmake/Qt6/QtPluginHelpers.cmake:479 (qt_internal_extend_qt_entity_sbom) psql/CMakeLists.txt:10 (qt_internal_add_plugin)解决方法编译时设置 -DQT_GENERATE_SBOM=OFF 参数
数据库连接/初始化失败
Database connection failed: "connection to server at \"localhost\" (::1), port 5432 failed: Connection refused\n\tIs the server running on that host and accepting TCP/IP connections?\nconnection to server at \"localhost\" (127.0.0.1), port 5432 failed: Connection refused\n\tIs the server running on that host and accepting TCP/IP connections?\nQPSQL: Unable to connect" Failed to initialize database解决方法
- 检查postgreSQL是否已经启动,并且在监听 5432 端口
- 检查 postgresql.conf 配置文件是否在监听局域网连接,确认 pg_hba.conf 配置文件(M系列默认路径: /opt/homebrew/var/postgresql@xx )是否允许本地localhost用户/局域网用户连接。