Skip to content

Commit f24ddc7

Browse files
committed
Check if column exist before rename if exist, just return with no error (go-gitea#17870)
* Check if column exist before rename if exist, just return with no error * Also check if errors column exist * Add comment for migration * Fix sqlite test
1 parent 9a8532d commit f24ddc7

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

models/migrations/v184.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package migrations
66

77
import (
8+
"context"
89
"fmt"
910

1011
"code.gitea.io/gitea/modules/setting"
@@ -19,6 +20,22 @@ func renameTaskErrorsToMessage(x *xorm.Engine) error {
1920
Status int `xorm:"index"`
2021
}
2122

23+
// This migration maybe rerun so that we should check if it has been run
24+
messageExist, err := x.Dialect().IsColumnExist(x.DB(), context.Background(), "task", "message")
25+
if err != nil {
26+
return err
27+
}
28+
29+
if messageExist {
30+
errorsExist, err := x.Dialect().IsColumnExist(x.DB(), context.Background(), "task", "errors")
31+
if err != nil {
32+
return err
33+
}
34+
if !errorsExist {
35+
return nil
36+
}
37+
}
38+
2239
sess := x.NewSession()
2340
defer sess.Close()
2441
if err := sess.Begin(); err != nil {
@@ -29,6 +46,13 @@ func renameTaskErrorsToMessage(x *xorm.Engine) error {
2946
return fmt.Errorf("error on Sync2: %v", err)
3047
}
3148

49+
if messageExist {
50+
// if both errors and message exist, drop message at first
51+
if err := dropTableColumns(sess, "task", "message"); err != nil {
52+
return err
53+
}
54+
}
55+
3256
switch {
3357
case setting.Database.UseMySQL:
3458
if _, err := sess.Exec("ALTER TABLE `task` CHANGE errors message text"); err != nil {

0 commit comments

Comments
 (0)