8 个版本

0.3.0 2024 年 6 月 11 日
0.2.0 2024 年 5 月 17 日
0.1.6 2024 年 4 月 12 日
0.1.2 2024 年 3 月 8 日
0.1.0 2024 年 1 月 19 日

1922数据库接口

Download history 607/week @ 2024-05-02 504/week @ 2024-05-09 1069/week @ 2024-05-16 528/week @ 2024-05-23 530/week @ 2024-05-30 815/week @ 2024-06-06 632/week @ 2024-06-13 178/week @ 2024-06-20 482/week @ 2024-06-27 834/week @ 2024-07-04 1833/week @ 2024-07-11 2773/week @ 2024-07-18 2754/week @ 2024-07-25 2667/week @ 2024-08-01 2838/week @ 2024-08-08 3458/week @ 2024-08-15

12,203 每月下载量
用于 3 个 Crates(2 个直接使用)

PostgreSQL

2MB
37K SLoC

C 36K SLoC // 0.3% comments Perl 1.5K SLoC // 0.2% comments Rust 257 SLoC // 0.0% comments

pq-sys

libpq 自动生成的 Rust 绑定

构建

此仓库包含与 libpq-fe.hpostgres_ext.h 中提供的 C 函数的直接、一对一映射。此库期望系统上已安装 libpq。

Crates 的构建脚本将尝试使用以下方法查找 libpq 的 lib 路径

  • 首先,它会查找格式为 PQ_LIB_DIR_{TARGET} 的环境变量,其中 {TARGET} 将被用于交叉编译的 Target 环境变量替换
  • 其次,如果设置了环境变量 PQ_LIB_DIR,则使用其值
  • 如果没有设置环境变量,它将尝试使用 pkg-config 来定位它。所有 pkg-config Crates 的配置选项,如 PKG_CONFIG_ALLOW_CROSSPKG_CONFIG_ALL_STATIC 等,都将适用。
  • 然后,对于 MSVC ABI 构建,如果可用,构建脚本将尝试使用 vcpkg 安装中的库。您可能需要设置 VCPKG_ROOT(或运行 vcpkg integrate install),设置 VCPKGRS_DYNAMIC=1,并运行 vcpkg install libpq:x64-windows。有关更多信息,请参阅 vcpkg Crates 的文档。
  • 如果它仍然无法找到库,它将调用 Postgres 命令 pg_config --libdir

构建脚本指示 Cargo 在设置了环境变量 PQ_LIB_STATIC 的情况下将库静态链接。如果针对 musl 目标,这可能很有用。如果正在使用 pkg-config,则其配置选项将适用。

常见问题解答

我在 macOS 上看到 dyld: Symbol not found __cg_jpeg_resync_to_restart

这是由于 pg_config --libdir 的输出是一个也包含 libjpeg.dylib 的目录,该目录与系统 libjpeg 不同造成的。这通常是由于通过 homebrew 安装 postgres 或使用 postgresapp.com 造成的。

如果您通过homebrew安装,除非您提供了 features = ["pkg-config"],否则您不应该看到此问题。您可以通过导出 PQ_LIB_DIR="$(brew --prefix postgres)/lib" 来解决这个问题。

如果您使用postgresapp.com安装了postgresql,您将无法使用 cargo runcargo test 运行您的二进制文件。您可以通过 cargo build 手动编译二进制文件,然后运行 /target/debug/yourapp。您还可以手动创建一个仅包含指向 libpq.dylib 的符号链接的目录,然后导出 PQ_LIB_DIR 到该目录。建议您不要使用postgresapp.com。

许可协议

根据以下协议之一授权:

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可协议定义,您有意提交的任何贡献,都应按上述方式双重许可,没有任何额外的条款或条件。

依赖项