diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-06-21 18:49:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-21 10:49:25 +0000 |
commit | ce46834b938eb687152a680669ada95a26304178 (patch) | |
tree | 7a234a4673d41bb0f374670a02013b62f1e5d851 /modules | |
parent | dfd19fa38c9ee004c5d7e73f51af5981adcb5e6d (diff) | |
download | gitea-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.go | 28 |
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 |