Repository 当前包含 SQLite 专用 upsert、JSON、日期、部分索引和事务锁语义。直接换驱动会在启动、查询或并发领取时失败。
ON CONFLICT
julianday
SELECT ... FOR UPDATE SKIP LOCKED
预计修改:admin/repository/*.go、相关 service 和全量 *_test.go。
admin/repository/*.go
*_test.go
运行全量 Go 1.23 build/test/vet;对 MySQL 8.4 执行并发领取、幂等、登录、顺运宝和页面集成测试。
事务和排序差异可能造成重复领取或查漏数据。生产尚未切换,失败时回退代码并继续使用原 SQLite。
实现和真实 MySQL 8.4 全量回归已完成,提交 13cfced。工单进入待验收;生产数据迁移与线上部署分别由 #80、#81 跟踪。
13cfced
本地归档已提交:86b9e69,文档 docs/task/79-mysql8-repository迁移.md。工单保持开启,等待用户验收。
86b9e69
docs/task/79-mysql8-repository迁移.md
用户已明确验收通过。验收清单已回填,本工单关闭。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
Repository 当前包含 SQLite 专用 upsert、JSON、日期、部分索引和事务锁语义。直接换驱动会在启动、查询或并发领取时失败。
做什么 / 不做什么
怎么做
ON CONFLICT、julianday、SQLite JSON 函数和大小写比较改为 MySQL 8 等价实现。SELECT ... FOR UPDATE SKIP LOCKED或等价条件更新,保持指定/无主领取规则。预计修改:
admin/repository/*.go、相关 service 和全量*_test.go。验收标准
怎么验证
运行全量 Go 1.23 build/test/vet;对 MySQL 8.4 执行并发领取、幂等、登录、顺运宝和页面集成测试。
风险和回退
事务和排序差异可能造成重复领取或查漏数据。生产尚未切换,失败时回退代码并继续使用原 SQLite。
实施记录
测试结果
实现和真实 MySQL 8.4 全量回归已完成,提交
13cfced。工单进入待验收;生产数据迁移与线上部署分别由 #80、#81 跟踪。本地归档已提交:
86b9e69,文档docs/task/79-mysql8-repository迁移.md。工单保持开启,等待用户验收。用户已明确验收通过。验收清单已回填,本工单关闭。