@@ -17,7 +17,7 @@ import (
1717var CmdConvert = cli.Command {
1818 Name : "convert" ,
1919 Usage : "Convert the database" ,
20- Description : "A command to convert an existing MySQL database from utf8 to utf8mb4" ,
20+ Description : "A command to convert an existing MySQL database from utf8 to utf8mb4 or MSSQL database from varchar to nvarchar " ,
2121 Action : runConvert ,
2222}
2323
@@ -35,17 +35,22 @@ func runConvert(ctx *cli.Context) error {
3535 log .Info ("Log path: %s" , setting .Log .RootPath )
3636 log .Info ("Configuration file: %s" , setting .CustomConf )
3737
38- if ! setting .Database .Type .IsMySQL () {
39- fmt .Println ("This command can only be used with a MySQL database" )
40- return nil
38+ switch {
39+ case setting .Database .Type .IsMySQL ():
40+ if err := db .ConvertUtf8ToUtf8mb4 (); err != nil {
41+ log .Fatal ("Failed to convert database from utf8 to utf8mb4: %v" , err )
42+ return err
43+ }
44+ fmt .Println ("Converted successfully, please confirm your database's character set is now utf8mb4" )
45+ case setting .Database .Type .IsMSSQL ():
46+ if err := db .ConvertVarcharToNVarchar (); err != nil {
47+ log .Fatal ("Failed to convert database from varchar to nvarchar: %v" , err )
48+ return err
49+ }
50+ fmt .Println ("Converted successfully, please confirm your database's all columns character is NVARCHAR now" )
51+ default :
52+ fmt .Println ("This command can only be used with a MySQL or MSSQL database" )
4153 }
4254
43- if err := db .ConvertUtf8ToUtf8mb4 (); err != nil {
44- log .Fatal ("Failed to convert database from utf8 to utf8mb4: %v" , err )
45- return err
46- }
47-
48- fmt .Println ("Converted successfully, please confirm your database's character set is now utf8mb4" )
49-
5055 return nil
5156}
0 commit comments