diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-06-08 21:53:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-08 21:53:45 +0800 |
commit | 23a2ee3510ad1b1e7e89edc526ed394c71a8ba24 (patch) | |
tree | cb2ad04a3f6c12e266f84f2a187be8f9a348f438 /cmd | |
parent | 6fb31a54610d319fbcb6c930d2c4457c8be82c96 (diff) | |
download | gitea-23a2ee3510ad1b1e7e89edc526ed394c71a8ba24.tar.gz gitea-23a2ee3510ad1b1e7e89edc526ed394c71a8ba24.zip |
Add command to convert mysql database from utf8 to utf8mb4 (#7144)
* add command to convert mysql database from utf8 to utf8mb4
* Update cmd/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update cmd/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update cmd/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update models/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update models/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update cmd/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
* Update cmd/convert.go
Co-Authored-By: John Olheiser <42128690+jolheiser@users.noreply.github.com>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/convert.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cmd/convert.go b/cmd/convert.go new file mode 100644 index 0000000000..cb0510c722 --- /dev/null +++ b/cmd/convert.go @@ -0,0 +1,49 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package cmd + +import ( + "fmt" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + + "github.com/urfave/cli" +) + +// CmdConvert represents the available convert sub-command. +var CmdConvert = cli.Command{ + Name: "convert", + Usage: "Convert the database", + Description: "A command to convert an existing MySQL database from utf8 to utf8mb4", + Action: runConvert, +} + +func runConvert(ctx *cli.Context) error { + if err := initDB(); err != nil { + return err + } + + log.Trace("AppPath: %s", setting.AppPath) + log.Trace("AppWorkPath: %s", setting.AppWorkPath) + log.Trace("Custom path: %s", setting.CustomPath) + log.Trace("Log path: %s", setting.LogRootPath) + models.LoadConfigs() + + if models.DbCfg.Type != "mysql" { + fmt.Println("This command can only be used with a MySQL database") + return nil + } + + if err := models.ConvertUtf8ToUtf8mb4(); err != nil { + log.Fatal("Failed to convert database from utf8 to utf8mb4: %v", err) + return err + } + + fmt.Println("Converted successfully, please confirm your database's character set is now utf8mb4") + + return nil +} |