@@ -12,8 +12,6 @@ import (
1212 "path/filepath"
1313 "strings"
1414 "time"
15-
16- "code.gitea.io/gitea/modules/log"
1715)
1816
1917var (
3634 SSLMode string
3735 Path string
3836 LogSQL bool
39- Charset string
37+ MysqlCharset string
4038 Timeout int // seconds
4139 SQLiteJournalMode string
4240 DBConnectRetries int
@@ -60,11 +58,6 @@ func LoadDBSetting() {
6058func loadDBSetting (rootCfg ConfigProvider ) {
6159 sec := rootCfg .Section ("database" )
6260 Database .Type = DatabaseType (sec .Key ("DB_TYPE" ).String ())
63- defaultCharset := "utf8"
64-
65- if Database .Type .IsMySQL () {
66- defaultCharset = "utf8mb4"
67- }
6861
6962 Database .Host = sec .Key ("HOST" ).String ()
7063 Database .Name = sec .Key ("NAME" ).String ()
@@ -74,10 +67,7 @@ func loadDBSetting(rootCfg ConfigProvider) {
7467 }
7568 Database .Schema = sec .Key ("SCHEMA" ).String ()
7669 Database .SSLMode = sec .Key ("SSL_MODE" ).MustString ("disable" )
77- Database .Charset = sec .Key ("CHARSET" ).In (defaultCharset , []string {"utf8" , "utf8mb4" })
78- if Database .Type .IsMySQL () && defaultCharset != "utf8mb4" {
79- log .Error ("Deprecated database mysql charset utf8 support, please use utf8mb4 or convert utf8 to utf8mb4." )
80- }
70+ Database .MysqlCharset = sec .Key ("MYSQL_CHARSET" ).MustString ("utf8mb4" )
8171
8272 Database .Path = sec .Key ("PATH" ).MustString (filepath .Join (AppDataPath , "gitea.db" ))
8373 Database .Timeout = sec .Key ("SQLITE_TIMEOUT" ).MustInt (500 )
@@ -101,9 +91,9 @@ func loadDBSetting(rootCfg ConfigProvider) {
10191// DBConnStr returns database connection string
10292func DBConnStr () (string , error ) {
10393 var connStr string
104- Param := "?"
105- if strings .Contains (Database .Name , Param ) {
106- Param = "&"
94+ paramSep := "?"
95+ if strings .Contains (Database .Name , paramSep ) {
96+ paramSep = "&"
10797 }
10898 switch Database .Type {
10999 case "mysql" :
@@ -116,15 +106,15 @@ func DBConnStr() (string, error) {
116106 tls = "false"
117107 }
118108 connStr = fmt .Sprintf ("%s:%s@%s(%s)/%s%scharset=%s&parseTime=true&tls=%s" ,
119- Database .User , Database .Passwd , connType , Database .Host , Database .Name , Param , Database .Charset , tls )
109+ Database .User , Database .Passwd , connType , Database .Host , Database .Name , paramSep , Database .MysqlCharset , tls )
120110 case "postgres" :
121- connStr = getPostgreSQLConnectionString (Database .Host , Database .User , Database .Passwd , Database .Name , Param , Database .SSLMode )
111+ connStr = getPostgreSQLConnectionString (Database .Host , Database .User , Database .Passwd , Database .Name , paramSep , Database .SSLMode )
122112 case "mssql" :
123113 host , port := ParseMSSQLHostPort (Database .Host )
124114 connStr = fmt .Sprintf ("server=%s; port=%s; database=%s; user id=%s; password=%s;" , host , port , Database .Name , Database .User , Database .Passwd )
125115 case "sqlite3" :
126116 if ! EnableSQLite3 {
127- return "" , errors .New ("this binary version does not build support for SQLite3" )
117+ return "" , errors .New ("this Gitea binary was not built with SQLite3 support " )
128118 }
129119 if err := os .MkdirAll (path .Dir (Database .Path ), os .ModePerm ); err != nil {
130120 return "" , fmt .Errorf ("Failed to create directories: %w" , err )
@@ -136,7 +126,7 @@ func DBConnStr() (string, error) {
136126 connStr = fmt .Sprintf ("file:%s?cache=shared&mode=rwc&_busy_timeout=%d&_txlock=immediate%s" ,
137127 Database .Path , Database .Timeout , journalMode )
138128 default :
139- return "" , fmt .Errorf ("Unknown database type: %s" , Database .Type )
129+ return "" , fmt .Errorf ("unknown database type: %s" , Database .Type )
140130 }
141131
142132 return connStr , nil
0 commit comments