Documentation ¶
Overview ¶
* Package mysql of gorm library. * gorm mysql封装,支持多个数据库实例化为连接池对象 * 结合了xorm思想,将每个数据库对象作为一个数据库引擎句柄 * xorm设计思想:在xorm里面,可以同时存在多个Orm引擎 * 一个Orm引擎称为Engine,一个Engine一般只对应一个数据库 * 因此,可以将gorm的每个数据库连接句柄,可以作为一个Engine来进行处理 * 容易踩坑的地方: * 对于golang的官方sql引擎,sql.open并非立即连接db,用的时候才会真正的建立连接 * 但是gorm.Open在设置完db对象后,还发送了一个Ping操作,判断连接是否连接上去 * 对于短连接的话,建议用完就调用db.Close()方法释放db连接资源 * 对于长连接服务,一般建议在main/init中关闭连接就可以 * 具体可以看gorm/main.go源码85行 * 对于gorm实现读写分离: * 可以实例化master,slaves实例,对于curd用不同的句柄就可以 * 由于gorm自己对mysql做了一次包裹,所以重命名处理 * gMysql "gorm.io/driver/mysql" * gorm v2版本仓库地址:https://github.com/go-gorm/gorm
Package mysql gMysql option for gorm v2 config.
Index ¶
- Variables
- func CloseAllDb()
- func CloseDbByName(name string) error
- func GetDbObj(name string) (*gorm.DB, error)
- type DbConf
- func (conf *DbConf) Close() error
- func (conf *DbConf) DSN() (string, error)
- func (conf *DbConf) Db() *gorm.DB
- func (conf *DbConf) InitInstance() error
- func (conf *DbConf) SetDbPool() error
- func (conf *DbConf) SetEngineName(name string) error
- func (conf *DbConf) ShortConnect() error
- func (conf *DbConf) SqlDB() (*sql.DB, error)
- type Option
- func WithDefaultStringSize(size uint) Option
- func WithDisableDatetimePrecision(b bool) Option
- func WithDontSupportRenameColumn(b bool) Option
- func WithDontSupportRenameIndex(b bool) Option
- func WithDriverName(name string) Option
- func WithDsn(dsn string) Option
- func WithGormConfig(config gorm.Config) Option
- func WithGormConnPool(conn gorm.ConnPool) Option
- func WithLogLevel(logLevel logger.LogLevel) Option
- func WithLogger(gLogger logger.Writer) Option
- func WithSkipInitializeWithVersion(b bool) Option
Constants ¶
This section is empty.
Variables ¶
var ( // EngineNotExist engine not found EngineNotExist = errors.New("current db engine not exist") // EngineNameEmpty engine name is empty EngineNameEmpty = errors.New("current engine name is empty") )
Functions ¶
Types ¶
type DbConf ¶
type DbConf struct { Ip string Port int // 默认3306 User string Password string Database string Charset string // 字符集 utf8mb4 支持表情符号 Collation string // 整理字符集 utf8mb4_unicode_ci UsePool bool // 当前db实例是否采用db连接池,默认不采用,如采用请求配置该参数 MaxIdleConns int // 空闲pool个数 MaxOpenConns int // 最大open connection个数 // sets the maximum amount of time a connection may be reused. // 设置连接可以重用的最大时间 // 给db设置一个超时时间,时间小于数据库的超时时间 MaxLifetime int64 // 数据库超时时间,单位s // 连接超时/读取超时/写入超时设置 Timeout time.Duration // Dial timeout ReadTimeout time.Duration // I/O read timeout WriteTimeout time.Duration // I/O write timeout ParseTime bool // 格式化时间类型 Loc string // 时区字符串 Local,PRC ShowSql bool // sql语句是否输出 // sql输出logger句柄接口 // logger.Writer 接口需要实现Printf(string, ...interface{}) 方法 // 具体可以看gorm v2 logger包源码 // https://github.com/go-gorm/gorm Logger logger.Writer LoggerConfig logger.Config // gorm v2新增参数logger.Config // contains filtered or unexported fields }
DbConf mysql连接信息 parseTime=true changes the output type of DATE and DATETIME values to time.Time instead of []byte / string The date or datetime like 0000-00-00 00:00:00 is converted into zero value of time.Time.
func (*DbConf) DSN ¶ added in v1.1.0
* DSN 设置mysql dsn mysql charset查看 mysql> show character set where charset="utf8mb4"; +---------+---------------+--------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+---------------+--------------------+--------+ | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | +---------+---------------+--------------------+--------+ 1 row in set (0.00 sec)
func (*DbConf) InitInstance ¶ added in v1.1.0
InitInstance 建立db连接句柄 创建当前数据库db对象,并非连接,在使用的时候才会真正建立db连接 为兼容之前的版本,这里新增SetDb创建db对象
func (*DbConf) SetEngineName ¶
SetEngineName 给当前数据库指定engineName
func (*DbConf) ShortConnect ¶
ShortConnect 建立短连接,用完需要调用Close()进行关闭连接,释放资源 否则就会出现too many connection
type Option ¶ added in v1.1.0
type Option func(conf *DbConf)
Option DbConf 功能函数模式
func WithDefaultStringSize ¶ added in v1.1.0
WithDefaultStringSize 设置字符串默认长度
func WithDisableDatetimePrecision ¶ added in v1.1.0
WithDisableDatetimePrecision 是否禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
func WithDontSupportRenameColumn ¶ added in v1.1.0
WithDontSupportRenameColumn 是否用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
func WithDontSupportRenameIndex ¶ added in v1.1.0
WithDontSupportRenameIndex 是否重命名索引时采用删除并新建的方式 MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
func WithDriverName ¶ added in v1.1.0
WithDriverName 设置db driver name.
func WithGormConfig ¶ added in v1.1.0
WithGormConfig 设置gorm.Config
func WithGormConnPool ¶ added in v1.1.0
WithGormConnPool 设置gorm conn pool.
func WithLogLevel ¶ added in v1.1.0
WithLogLevel 设置sql logger level
func WithLogger ¶ added in v1.1.0
WithLogger 设置gorm logger实例对象
func WithSkipInitializeWithVersion ¶ added in v1.1.0
WithSkipInitializeWithVersion 根据当前 MySQL 版本自动配置