必须先定义结构清晰的配置文件或代码初始化逻辑,否则XORM Engine创建失败、连接池参数无效、SQL日志开关失效;YAML中driver/url/username/password四字段缺一不可,url须含parseTime=true和loc=Local。

要让XORM框架正确连接数据库并加载配置,必须先定义结构清晰的配置文件或代码初始化逻辑,否则Engine创建会失败、连接池参数无法生效、SQL日志开关无效。
YAML格式配置文件写法
新建config.yaml文件,内容必须严格遵循字段名与嵌套层级,【driver、url、username、password四个字段缺一不可】,否则Init()调用时会panic。
driver: mysql
url: tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=true&loc=Local
username: root
password: 123456
maxIdleConns: 10
maxOpenConns: 30
showSQL: true
注意:url中必须包含parseTime=true和loc=Local,否则time.Time类型字段读写会出错;若省略,则后续查询时间字段返回空值或解析失败。
Go代码中直接初始化Database结构体
方法一:硬编码初始化(适合开发/测试环境)
db := &Database{
Driver: "mysql",
Url: "tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=true&loc=Local",
Username: "root",
Password: "123456",
MaxIdleConns: 10,
MaxOpenConns: 30,
ShowSQL: true,
}
db.Init()
方法二:从环境变量注入(生产推荐)
第一步:读取环境变量
driver := os.Getenv("DB_DRIVER")
url := os.Getenv("DB_URL")
username := os.Getenv("DB_USER")
password := os.Getenv("DB_PASS")
第二步:构造结构体并校验非空
if driver == "" || url == "" || username == "" || password == "" {
log.Fatal("missing required DB environment variables")
}
第三步:初始化并触发连接检查
db := &Database{Driver: driver, Url: url, Username: username, Password: password}
db.Init()
这一步操作起来很简单,直接把文件拖进去就行。
方法三:结合Viper读取YAML后赋值(推荐中大型项目)
v := viper.New()
v.SetConfigName("config")
v.AddConfigPath("./conf")
_ = v.ReadInConfig()
db := &Database{}
_ = v.UnmarshalKey("database", db)
db.Init()
【v.UnmarshalKey必须指定键名为"database",且YAML中该节点需为顶层字段,否则结构体字段全为零值】











