1. XORM 数据库驱动层适配
CasDoor 使用 XORM 作为数据库 ORM 框架。达梦 8 的官方 Go 驱动基于 database/sql 接口实现,理论上可以与 XORM 集成。但在实际适配中,CasDoor 集成的 XORM 版本过低,无法与达梦驱动兼容。通过升级 XORM 依赖至最新版本,成功打通了 CasDoor 与达梦数据库的连接通道。
2. 数据库连接配置
采用达梦数据库驱动连接串格式 dm://用户名:密码@IP:端口/,在 CasDoor 配置文件中完成数据源配置。达梦数据库服务端需开启兼容模式,通过修改 dm.ini 配置文件中 COMPATIBLE_MODE=4 参数,实现对 MySQL 语法的兼容支持。
3. 日期字段兼容性修复
适配过程中遇到 CasDoor 看板页面的 getDashBoard 接口使用了日期条件查询,在达梦数据库中日期格式转换存在兼容性问题。CasDoor 将所有日期字段(如 created_time)定义为 varchar 类型以兼容不同数据库,但接口代码中仍以 Time 类型作为入参,导致类型不匹配。解决方案是将时间入参按格式转换为字符串,利用字典序进行比较,实现与 datetime 类型等效的日期操作。
4. 容器化部署交付
完成适配后,构建了支持 ARM64 与 AMD64 双架构的 Docker 镜像,并发布至 DockerHub。可通过环境变量 driverName=dm 与 dataSourceName 一键完成达梦数据库连接配置。