在本站中
本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的链接都指向提交 89a61b1(2026-10-23),行号以它为准。那个提交的 Cargo.lock 锁的是 sea-orm 1.1.20、sea-orm-migration 1.1.20、sea-query 0.32.7、sea-query-binder 0.7.0 和 sqlx 0.8.6,比本卷的 0.9.0 早一个破坏性版本。本站的 Rust 代码里没有一处 sqlx::,sqlx 全靠 sea-orm 调用;sea-orm 本身留到下一卷,这里只看它和 sqlx 之间的那一层。
- 本站怎么用 sqlx:
build_connect_options的五个参数经 sea-orm 落到PoolOptions上,connect_timeout和acquire_timeout写的是同一个字段,max_lifetime、test_before_acquire、慢获取阈值、语句缓存都是 sqlx 默认值;sqlx_logging_level(Debug)关掉的是 sea-orm 自己的 INFO 默认,超过 1 秒的语句仍然打 WARN;每条查询都是query_with加缓存的预备语句;迁移走 sea-orm-migration,全部待执行的迁移包在一个事务里,没有 advisory lock、没有校验和;生产库 100 个连接和本站池上限 32 的关系;18 个常见坑逐个核对能不能落到本站。 - 升级到 0.9:CHANGELOG 里和 Postgres 有关的每一条破坏性改动,落在本站代码、sea-orm 还是谁都不碰;sea-orm 2.0.4 依赖 sqlx 0.9.0,用
AssertSqlSafe包住 sea-query 生成的 SQL,从sqlx-core拿TransactionManager;本站代码在 sqlx 这一层有没有要改的,以及错误文本、日志字段这两处看得见的变化。
flowchart TB poolrs["pool.rs 五个参数"] --> seaopts["sea-orm ConnectOptions"] seaopts --> pooloptions["PoolOptions"] seaopts --> pgopts["PgConnectOptions"] pooloptions --> pgpool["PgPool 最多 32 条"] pgopts --> pgpool entity["Entity 查询"] --> seaquery["sea-query 生成 SQL"] seaquery --> qw["query_with"] qw --> pgpool mig["Migrator::up"] --> pgpool pgpool --> prod["生产库 max 100"]
💬 关联讨论
发起讨论加载中...