Fix encoding on configuration tables. (#13296)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
e48d093d01
Коммит
fdd1ae974f
@@ -70,6 +70,11 @@ func NewDatabaseStore(dsn string) (ds *DatabaseStore, err error) {
|
|||||||
//
|
//
|
||||||
// Uses MEDIUMTEXT on MySQL, and TEXT on sane databases.
|
// Uses MEDIUMTEXT on MySQL, and TEXT on sane databases.
|
||||||
func initializeConfigurationsTable(db *sqlx.DB) error {
|
func initializeConfigurationsTable(db *sqlx.DB) error {
|
||||||
|
mysqlCharset := ""
|
||||||
|
if db.DriverName() == "mysql" {
|
||||||
|
mysqlCharset = "DEFAULT CHARACTER SET utf8mb4"
|
||||||
|
}
|
||||||
|
|
||||||
_, err := db.Exec(`
|
_, err := db.Exec(`
|
||||||
CREATE TABLE IF NOT EXISTS Configurations (
|
CREATE TABLE IF NOT EXISTS Configurations (
|
||||||
Id VARCHAR(26) PRIMARY KEY,
|
Id VARCHAR(26) PRIMARY KEY,
|
||||||
@@ -77,7 +82,8 @@ func initializeConfigurationsTable(db *sqlx.DB) error {
|
|||||||
CreateAt BIGINT NOT NULL,
|
CreateAt BIGINT NOT NULL,
|
||||||
Active BOOLEAN NULL UNIQUE
|
Active BOOLEAN NULL UNIQUE
|
||||||
)
|
)
|
||||||
`)
|
` + mysqlCharset)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to create Configurations table")
|
return errors.Wrap(err, "failed to create Configurations table")
|
||||||
}
|
}
|
||||||
@@ -89,23 +95,32 @@ func initializeConfigurationsTable(db *sqlx.DB) error {
|
|||||||
CreateAt BIGINT NOT NULL,
|
CreateAt BIGINT NOT NULL,
|
||||||
UpdateAt BIGINT NOT NULL
|
UpdateAt BIGINT NOT NULL
|
||||||
)
|
)
|
||||||
`)
|
` + mysqlCharset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to create ConfigurationFiles table")
|
return errors.Wrap(err, "failed to create ConfigurationFiles table")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change from TEXT (65535 limit) to MEDIUM TEXT (16777215) on MySQL. This is a
|
// Change from TEXT (65535 limit) to MEDIUM TEXT (16777215) on MySQL. This is a
|
||||||
// backwards-compatible migration for any existing schema.
|
// backwards-compatible migration for any existing schema.
|
||||||
|
// Also fix using the wrong encoding initally
|
||||||
if db.DriverName() == "mysql" {
|
if db.DriverName() == "mysql" {
|
||||||
_, err = db.Exec(`ALTER TABLE Configurations MODIFY Value MEDIUMTEXT`)
|
_, err = db.Exec(`ALTER TABLE Configurations MODIFY Value MEDIUMTEXT`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to alter Configurations table")
|
return errors.Wrap(err, "failed to alter Configurations table")
|
||||||
}
|
}
|
||||||
|
_, err = db.Exec(`ALTER TABLE Configurations CONVERT TO CHARACTER SET utf8mb4`)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "failed to alter Configurations table character set")
|
||||||
|
}
|
||||||
|
|
||||||
_, err = db.Exec(`ALTER TABLE ConfigurationFiles MODIFY Data MEDIUMTEXT`)
|
_, err = db.Exec(`ALTER TABLE ConfigurationFiles MODIFY Data MEDIUMTEXT`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to alter ConfigurationFiles table")
|
return errors.Wrap(err, "failed to alter ConfigurationFiles table")
|
||||||
}
|
}
|
||||||
|
_, err = db.Exec(`ALTER TABLE ConfigurationFiles CONVERT TO CHARACTER SET utf8mb4`)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "failed to alter ConfigurationFiles table character set")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user