在本站中
本站是开源的,仓库在 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。sqlx 那一层(池参数、日志、协议、迁移不加锁)在 sqlx 卷的在本站中讲过,这里只看 sea-orm 自己的那一层:实体、查询、写入、事务、迁移,以及换到 2.0.4 时要改什么。
- 本站怎么用 sea-orm:11 个展开写法的实体,关系只有评论列表的一处
find_also_related用到,其余关联都是手写的IN批量查询,没有 N+1,但列表页取回了用不上的长文本列;把站点的查询原样拷进实验 crate、在实验库上跑出实际发出的 SQL;三处on_conflict在冲突时都返回Ok;三个事务都只用&txn,并发首次登录被唯一索引挡住、不留孤儿用户;reply_count加一是原子的,删回复时的重新计数和并发回复交错会算错;9 个迁移在一个事务里。 - 升级到 2.0:把站点工作区拷一份、改两行版本号离线编译:10 个错误,全是 sea-query 1.0 把
Expr的方法挪进ExprTrait造成的,三行use修好,9 个用到 sea-orm 的 crate 连同测试全部通过;能编译但行为变了的几处里,真正落到本站的是每个迁移一个事务、NULL 解码的错误文本和 sqlx 0.9 带来的at line N。
flowchart TB site["本站 server 函数"] --> ent["11 个实体"] site --> q["查询与写入"] q --> orm1["sea-orm 1.1.20"] mig["9 个迁移"] --> orm1 orm1 --> sqlx8["sqlx 0.8.6"] site -.->|"改三行 import"| orm2["sea-orm 2.0.4"] orm2 --> sqlx9["sqlx 0.9.0"]
💬 关联讨论
发起讨论加载中...