Skip to content

多数据库支持

文件配置

在配置文件中新增db-list选项 db-list中每一项与主库配置结构一致(同为 GeneralDB),在此基础上多出typealias-namedisable三个字段

yaml
db-list:
  - disable: false # 是否禁用,填true将不被初始化
    type: "" # 数据库的类型,目前支持mysql、pgsql、mssql、oracle
    alias-name: "" # 数据库的名称,注意: alias-name 需要在db-list中唯一
    path: ''
    port: ''
    config: ''
    db-name: ''
    username: ''
    password: ''
    max-idle-conns: 10
    max-open-conns: 100
    conn-max-lifetime: 0 # 连接最长复用时间,单位秒
    log-mode: ""
    log-zap: false

使用

config.yaml中正确配置db-list参数后,main.go的初始化流程会自动调用initialize.DBList()完成多数据库初始化,无需手动添加。

初始化后的db对象存放在global.GVA_DBList(类型为map[string]*gorm.DB)中,使用时根据配置的alias-nameglobal.GetGlobalDBByDBName(alias-name)或者global.MustGetGlobalDBByDBName(alias-name)方法中获取,两个方法的区别是MustGetGlobalDBByDBName会在alias-name对应db对象不存在时panic

注意

  • 不要直接操作 global.GVA_DBList
  • 数据权限 GORM 回调会同时注册到主库与db-list中的全部连接(见initialize/data_scope.goRegisterDataScopeCallbacks