XORM官方明确支持MySQL 5.7+、MySQL 8.0+、MariaDB、TiDB、PostgreSQL 9.6+、SQLite3、Microsoft SQL Server(mssql)、Oracle(实验性)和ODBC;需按数据库类型单独导入对应驱动包(如“github.com/go-sql-driver/mysql”),并严格匹配driverName(如“mysql”),最后通过engine.Ping()验证连接。

要确认XORM框架当前实际支持哪些数据库并完成驱动适配,必须依据其官方维护的驱动列表与运行时兼容性,不能仅凭历史文档或第三方封装版本推测。
官方明确支持的数据库类型
根据 xorm.io 官方文档(2026年最新版)及源码仓库 go-xorm/xorm 的 drivers.go 文件定义,XORM 原生支持以下数据库引擎:
MySQL 5.7+、MySQL 8.0+、MariaDB、TiDB、PostgreSQL 9.6+、SQLite3、Microsoft SQL Server(mssql)、Oracle(实验性,需手动启用oci8)、ODBC(通过 github.com/alexbrainman/odbc)。
【注意:Oracle 和 ODBC 驱动未默认启用,需显式导入且编译时开启 CGO】
对应驱动包与导入方式
每个数据库必须单独导入对应驱动,否则 NewEngine 会报错 “sql: unknown driver”。
方法一:MySQL(推荐使用官方驱动)
导入:_ "github.com/go-sql-driver/mysql"
引擎初始化参数中 driverName 必须为 "mysql"。
方法二:PostgreSQL
导入:_ "github.com/lib/pq"
driverName 设为 "postgres",连接串格式为 "host=localhost port=5432 user=xxx dbname=xxx sslmode=disable"。
方法三:SQLite3
导入:_ "github.com/mattn/go-sqlite3"
driverName 为 "sqlite3",dataSourceName 直接填文件路径,如 "./test.db"。
方法四:SQL Server(mssql)
导入:_ "github.com/denisenkom/go-mssqldb"
driverName 为 "mssql",连接串需含 server=;user id=;password=;database=; 等字段。
多数据库适配关键操作步骤
第一步:确认项目 go.mod 中已声明 xorm 主库依赖
执行 go get xorm.io/xorm@v1.4.3(2026年稳定版),避免使用已归档的 github.com/go-xorm/xorm 旧地址。
第二步:按目标数据库类型,仅导入对应驱动包
例如只用 MySQL 就不导入 pq 或 sqlite3,否则会导致 Windows 下编译失败或 Linux CGO 环境异常。
第三步:在 main 包或 engine 初始化前,确保驱动被 _ 空导入
这一步不可省略——Go 的 sql.Register 机制依赖 init() 函数注册驱动,未导入则 NewEngine 返回 nil。
第四步:调用 NewEngine 时传入正确 driverName 字符串
【driverName 必须与导入的驱动包注册名完全一致,大小写敏感】。例如导入的是 github.com/lib/pq,就必须用 "postgres",不能写成 "postgresql" 或 "pg"。
第五步:测试连接后立即调用 engine.Ping()
仅靠 NewEngine 不报错不代表连接就绪,必须 Ping 成功才能确认驱动加载、网络、认证三者全部通路正常。











