从调库到翻源代码:给wakapi增加SQL Server支持
💡
原文中文,约18300字,阅读约需44分钟。
📝
内容提要
本文分享了将开源项目迁移到SQL Server数据库时遇到的问题和解决方法,包括数据记录工具的局限性、替代品wakapi的发现、SQL语句兼容性、数据库migration中的原生SQL语句和片段、数据类型映射、级联外键约束等。作者总结了解决问题的方法和实践的收获。
🎯
关键要点
- 将开源项目迁移到SQL Server数据库时遇到的问题和解决方法。
- 使用SQL Server的Azure SQL服务进行数据库部署。
- 寻找wakatime的替代品,最终发现了wakapi项目。
- wakapi项目支持SQL Server,但需要解决原生SQL语句的兼容性问题。
- 数据库migration中的原生SQL语句和片段可能导致兼容性问题。
- SQL Server不支持某些SQL语句的特性,如布尔类型和别名。
- 使用gorm的Dialector接口处理不同数据库的适配问题。
- 通过自定义数据类型解决不同数据库中列类型的映射问题。
- 避免创建递归的级联外键约束,确保数据库结构的正确性。
- 处理SQL Server不支持的ON CONFLICT DO NOTHING语句,使用MERGE INTO替代。
- 在调试过程中发现gorm的SQL Server适配器存在bug,导致无法正确生成upsert语句。
- 最终通过手动插入解决了重复键的问题,完成了项目的迁移和适配。
➡️