From a600fa8a1597adf20973fdeb255783df65be5317 Mon Sep 17 00:00:00 2001 From: hoteas <925970985@qq.com> Date: Wed, 22 Jul 2026 04:16:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(mysql):=20SetMysqlDB=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=20charset=20=E6=94=B9=E4=B8=BA=20utf8mb4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 与表字符集对齐,兼容 MySQL 8.0/8.4,避免连接层 utf8mb3。 Co-authored-by: Cursor --- application.go | 4 ++-- docs/HoTimeDB_使用说明.md | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) 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