diff --git a/application.go b/application.go index 3a51a3f..59589da 100644 --- a/application.go +++ b/application.go @@ -781,7 +781,7 @@ func SetMysqlDB(appIns *Application, config Map) { appIns.Db.Log = appIns.Log appIns.SetConnectDB(func() (master, slave *sql.DB) { query := config.GetString("user") + ":" + config.GetString("password") + - "@tcp(" + config.GetString("host") + ":" + config.GetString("port") + ")/" + config.GetString("name") + "?charset=utf8" + "@tcp(" + config.GetString("host") + ":" + config.GetString("port") + ")/" + config.GetString("name") + "?charset=utf8mb4" DB, e := sql.Open("mysql", query) if e != nil { appIns.Log.Error().Err(e).Msg("MySQL 主库连接失败") @@ -790,7 +790,7 @@ func SetMysqlDB(appIns *Application, config Map) { configSlave := config.GetMap("slave") if configSlave != nil { query := configSlave.GetString("user") + ":" + configSlave.GetString("password") + - "@tcp(" + config.GetString("host") + ":" + configSlave.GetString("port") + ")/" + configSlave.GetString("name") + "?charset=utf8" + "@tcp(" + config.GetString("host") + ":" + configSlave.GetString("port") + ")/" + configSlave.GetString("name") + "?charset=utf8mb4" DB1, e := sql.Open("mysql", query) if e != nil { appIns.Log.Error().Err(e).Msg("MySQL 从库连接失败") diff --git a/docs/HoTimeDB_使用说明.md b/docs/HoTimeDB_使用说明.md index 80213f1..144ad50 100644 --- a/docs/HoTimeDB_使用说明.md +++ b/docs/HoTimeDB_使用说明.md @@ -33,6 +33,8 @@ HoTimeDB是一个基于Golang实现的轻量级ORM框架,参考PHP Medoo设计 ### 初始化数据库连接 +`Application.SetMysqlDB` 默认 DSN 带 `charset=utf8mb4`(兼容 MySQL 8.0 / 8.4,与表字符集对齐)。 + ```go import ( "code.hoteas.com/golang/hotime/db" @@ -43,7 +45,7 @@ import ( // 创建连接函数 func createConnection() (master, slave *sql.DB) { - master, _ = sql.Open("mysql", "user:password@tcp(localhost:3306)/database") + master, _ = sql.Open("mysql", "user:password@tcp(localhost:3306)/database?charset=utf8mb4") // slave是可选的,用于读写分离 slave = master // 或者连接到从数据库 return