summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-06-21 18:49:25 +0800
committerGitHub <noreply@github.com>2023-06-21 10:49:25 +0000
commitce46834b938eb687152a680669ada95a26304178 (patch)
tree7a234a4673d41bb0f374670a02013b62f1e5d851 /modules
parentdfd19fa38c9ee004c5d7e73f51af5981adcb5e6d (diff)
downloadgitea-ce46834b938eb687152a680669ada95a26304178.tar.gz
gitea-ce46834b938eb687152a680669ada95a26304178.zip
Remove "CHARSET" config option for MySQL, always use "utf8mb4" (#25413)
In modern days, there is no reason to make users set "charset" anymore. Close #25378 ## :warning: BREAKING The key `[database].CHARSET` was removed completely as every newer (>10years) MySQL database supports `utf8mb4` already. There is a (deliberately) undocumented new fallback option if anyone still needs to use it, but we don't recommend using it as it simply causes problems.
Diffstat (limited to 'modules')
-rw-r--r--modules/setting/database.go28
1 files changed, 9 insertions, 19 deletions
diff --git a/modules/setting/database.go b/modules/setting/database.go
index 7a7c7029a4..709655368c 100644
--- a/modules/setting/database.go
+++ b/modules/setting/database.go
@@ -12,8 +12,6 @@ import (
"path/filepath"
"strings"
"time"
-
- "code.gitea.io/gitea/modules/log"
)
var (
@@ -36,7 +34,7 @@ var (
SSLMode string
Path string
LogSQL bool
- Charset string
+ MysqlCharset string
Timeout int // seconds
SQLiteJournalMode string
DBConnectRetries int
@@ -60,11 +58,6 @@ func LoadDBSetting() {
func loadDBSetting(rootCfg ConfigProvider) {
sec := rootCfg.Section("database")
Database.Type = DatabaseType(sec.Key("DB_TYPE").String())
- defaultCharset := "utf8"
-
- if Database.Type.IsMySQL() {
- defaultCharset = "utf8mb4"
- }
Database.Host = sec.Key("HOST").String()
Database.Name = sec.Key("NAME").String()
@@ -74,10 +67,7 @@ func loadDBSetting(rootCfg ConfigProvider) {
}
Database.Schema = sec.Key("SCHEMA").String()
Database.SSLMode = sec.Key("SSL_MODE").MustString("disable")
- Database.Charset = sec.Key("CHARSET").In(defaultCharset, []string{"utf8", "utf8mb4"})
- if Database.Type.IsMySQL() && defaultCharset != "utf8mb4" {
- log.Error("Deprecated database mysql charset utf8 support, please use utf8mb4 or convert utf8 to utf8mb4.")
- }
+ Database.MysqlCharset = sec.Key("MYSQL_CHARSET").MustString("utf8mb4") // do not document it, end users won't need it.
Database.Path = sec.Key("PATH").MustString(filepath.Join(AppDataPath, "gitea.db"))
Database.Timeout = sec.Key("SQLITE_TIMEOUT").MustInt(500)
@@ -101,9 +91,9 @@ func loadDBSetting(rootCfg ConfigProvider) {
// DBConnStr returns database connection string
func DBConnStr() (string, error) {
var connStr string
- Param := "?"
- if strings.Contains(Database.Name, Param) {
- Param = "&"
+ paramSep := "?"
+ if strings.Contains(Database.Name, paramSep) {
+ paramSep = "&"
}
switch Database.Type {
case "mysql":
@@ -116,15 +106,15 @@ func DBConnStr() (string, error) {
tls = "false"
}
connStr = fmt.Sprintf("%s:%s@%s(%s)/%s%scharset=%s&parseTime=true&tls=%s",
- Database.User, Database.Passwd, connType, Database.Host, Database.Name, Param, Database.Charset, tls)
+ Database.User, Database.Passwd, connType, Database.Host, Database.Name, paramSep, Database.MysqlCharset, tls)
case "postgres":
- connStr = getPostgreSQLConnectionString(Database.Host, Database.User, Database.Passwd, Database.Name, Param, Database.SSLMode)
+ connStr = getPostgreSQLConnectionString(Database.Host, Database.User, Database.Passwd, Database.Name, paramSep, Database.SSLMode)
case "mssql":
host, port := ParseMSSQLHostPort(Database.Host)
connStr = fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", host, port, Database.Name, Database.User, Database.Passwd)
case "sqlite3":
if !EnableSQLite3 {
- return "", errors.New("this binary version does not build support for SQLite3")
+ return "", errors.New("this Gitea binary was not built with SQLite3 support")
}
if err := os.MkdirAll(path.Dir(Database.Path), os.ModePerm); err != nil {
return "", fmt.Errorf("Failed to create directories: %w", err)
@@ -136,7 +126,7 @@ func DBConnStr() (string, error) {
connStr = fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d&_txlock=immediate%s",
Database.Path, Database.Timeout, journalMode)
default:
- return "", fmt.Errorf("Unknown database type: %s", Database.Type)
+ return "", fmt.Errorf("unknown database type: %s", Database.Type)
}
return connStr, nil