1 Star 1 Fork 1

c./goframe框架

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
mysql_open.go 2.22 KB
一键复制 编辑 原始数据 按行查看 历史
admin 提交于 2024-11-05 01:30 +08:00 . 2024-11-5 替换中文提示完成.
// 版权归GoFrame作者(https://goframe.org)所有。保留所有权利。
//
// 本源代码形式受MIT许可证条款约束。
// 如果未随本文件一同分发MIT许可证副本,
// 您可以在https://github.com/gogf/gf处获取。
// md5:a9832f33b234e3f3
package mysql
import (
"database/sql"
"fmt"
"net/url"
"strings"
gdb "gitee.com/go_888/goframe/database/gdb"
gcode "gitee.com/go_888/goframe/errors/gcode"
gerror "gitee.com/go_888/goframe/errors/gerror"
gregex "gitee.com/go_888/goframe/text/gregex"
)
// X底层Open 创建并返回一个底层的 sql.DB 对象,用于 MySQL。
// 注意,它将时间.Time 参数默认转换为本地时区。
// md5:341df118003c304e
func (d *Driver) X底层Open(config *gdb.X结构_配置) (db *sql.DB, err error) {
var (
source string
underlyingDriverName = "mysql"
)
// [用户名[:密码]@][协议[(地址)]]/数据库名[?参数1=值1&...&参数N=值N]. md5:493f32d70b15315e
if config.Link != "" {
// ============================================================================
// 从 v2.2.0 版本开始已废弃。
// ============================================================================
// md5:73505fc2089cb531
source = config.Link
// 自定义在运行时更改架构。 md5:69ce0e441b271151
if config.Name != "" {
source, _ = gregex.X替换文本(`/([\w\.\-]+)+`, "/"+config.Name, source)
}
} else {
// 待办事项:在未指定字符集时不要设置字符集(在v2.5.0版本中). md5:2c9a899c402d1e44
source = fmt.Sprintf(
"%s:%s@%s(%s:%s)/%s?charset=%s",
config.User, config.Pass, config.Protocol, config.Host, config.Port, config.Name, config.Charset,
)
if config.Timezone != "" {
if strings.Contains(config.Timezone, "/") {
config.Timezone = url.QueryEscape(config.Timezone)
}
source = fmt.Sprintf("%s&loc=%s", source, config.Timezone)
}
if config.Extra != "" {
source = fmt.Sprintf("%s&%s", source, config.Extra)
}
}
if db, err = sql.Open(underlyingDriverName, source); err != nil {
err = gerror.X多层错误码并格式化(
gcode.X变量_CodeDbOperationError, err,
`为驱动 "%s" 使用数据源 "%s" 调用 sql.Open 失败`, underlyingDriverName, source,
)
return nil, err
}
return
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go_888/goframe.git
git@gitee.com:go_888/goframe.git
go_888
goframe
goframe框架
782a3f7170cf

搜索帮助