数据库连接配置实现
2026/8/5 12:12:55 网站建设 项目流程

数据库连接配置对象

type MysqlConfig struct { Ip string Port int Useer string Password string DBName string MaxOpenConns int MaxIdleConns int } type RedisConfig struct { Addr string Password string DB int MaxTry int }

生成 MySQL 数据库连接字符串(DSN)的方法

func (cfg *MysqlConfig) DSN() string { return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=UTC", cfg.User, cfg.Password, cfg.Ip, cfg.Port, cfg.DBName) }

一、data服务实现

1.创建dataServer配置对象:

type DataServerConfig struct { RegionName string TcpIp string TcpPort uint16 ExternalIp string // 注册到etcd对外IP,空时回退TcpIp SysHttpAddr string RegistrationCenter []string PlayerDB *common.MysqlConfig Redis *common.RedisConfig ExecutorSize int }

2、生成具体的sql.DB对象并创建连接

func (mgr *DBManager) newDBFromCfg(cfg *common.MysqlConfig) (*sql.DB, error) { if cfg == nil { return nil, errors.New("mysql config is nil") } db, err := sql.Open("mysql", cfg.DSN()) if err != nil { return nil, err } db.SetMaxOpenConns(cfg.MaxOpenConns) db.SetMaxIdleConns(cfg.MaxIdleConns) db.SetConnMaxLifetime(time.Hour * 7) // mysql 默认配置为8小时 需要比服务端小一点 if err := db.Ping(); err != nil { return nil, err } return db, nil }

3、直接根据表名和SQL语句进行数据交互

tableName := common.GetPlayerRecordTableName(playerId) querySql := "SELECT player_id,player_name,create_time,format_version,version,last_active_time,bin FROM " + tableName + " WHERE player_id=? LIMIT 1" row := mgr.playerDB.QueryRow(querySql, playerId)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询