从调库到翻源代码:给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语句。
  • 最终通过手动插入解决了重复键的问题,完成了项目的迁移和适配。
➡️

继续阅读