Skip to content

设置conf文件夹内的app.conf文件后,仍无法正常使用mysql数据库 #108

@dark-wind

Description

@dark-wind

问题描述

在云服务器部署后,默认设置下,可正常运行并远程访问,希望修改为mysql数据库驱动,我已在数据库中创建了空的engineer库,但修改配置文件app.conf及app2.conf后,无法正确识别到数据库配置的改变,仍调用sqllite。

报错

./engineercms
panic: 连接数据库失败, error=unable to open database file: no such file or directory

goroutine 1 [running]:
github.com/3xxx/engineercms/models.init.0()
        /root/gocode/src/github.com/3xxx/engineercms/models/AdminModel.go:169 +0x1fd4

查看这个报错文件发现mysql配置被注释掉了.始于第106行

	db_type, err := web.AppConfig.String("db_type")
	db_host, err := web.AppConfig.String("db_host")
	db_port, err := web.AppConfig.String("db_port")
	db_user, err := web.AppConfig.String("db_user")
	db_pass, err := web.AppConfig.String("db_pass")
	db_name, err := web.AppConfig.String("db_name")
	db_path, err := web.AppConfig.String("db_path")
	db_sslmode, err := web.AppConfig.String("db_sslmode")
	if err != nil {
		logs.Error(err)
	}
	switch db_type {
	// 1.注册驱动
	// case "mysql":
	// 	orm.RegisterDriver("mysql", orm.DRMySQL)
	// 	dns = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", db_user, db_pass, db_host, db_port, db_name)
	// 	// 注册xorm
	// 	// var err error
	// 	// engine, err = xorm.NewEngine(db_type, dns)
	// 	// if err != nil {
	// 	// 	log.Println(err)
	// 	// }
	// 	break
	case "postgres":
		orm.RegisterDriver("postgres", orm.DRPostgres)
		dns = fmt.Sprintf("dbname=%s host=%s  user=%s  password=%s  port=%s  sslmode=%s", db_name, db_host, db_user, db_pass, db_port, db_sslmode)
	case "sqlite3":
		orm.RegisterDriver("sqlite", orm.DRSqlite)
		if db_path == "" {
			db_path = "./"
		}
		dns = fmt.Sprintf("%s%s.db", db_path, db_name)
		break
	default:
		logs.Critical("Database driver is not allowed:", db_type)
	}

	// 2.beego注册默认数据库
	orm.RegisterDataBase("default", db_type, dns)

部署版本

20250718engineercms_publish
20250314engineercms(linux)
mysql 5.7.43

部署环境

ubuntu22.04

修改后的配置

app.conf

###数据库目前仅支持mysql,postgresql,sqlite3,后续会添加更多的数据库支持。
###数据库的配置信息需要填写,程序会根据配置自动建库

####mysql数据库链接信息
####必须先用Navicat for MySQL之类的工具(或命令)在mysql里建立一个数据库,名称为engineer
db_host = 127.0.0.1
db_port = 3306
db_user = engineer
db_pass = 123456
db_name = engineer
db_type = mysql

#####postgresql数据库链接信息
#db_host = localhost
#db_port = 5432
#db_user = postgres
#db_pass = postgres
#db_name = engineer
#db_type = postgres
#db_sslmode=disable

#########sqlite3数据库链接信息
###db_path 是指数据库保存的路径,默认是在项目的根目录
# db_path = database/
# db_name = engineer
# db_type = sqlite3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions