diff --git a/server/model/log.go b/server/model/log.go index 8bf7f683a..b56dda3b6 100644 --- a/server/model/log.go +++ b/server/model/log.go @@ -17,6 +17,6 @@ package model type Logs struct { ID int64 `xorm:"pk autoincr 'log_id'"` ProcID int64 `xorm:"UNIQUE 'log_job_id'"` - Data []byte `xorm:"log_data"` + Data []byte `xorm:"LONGBLOB 'log_data'"` // TODO: add create timestamp } diff --git a/server/store/datastore/migration/006_log_data_type.go b/server/store/datastore/migration/006_log_data_type.go new file mode 100644 index 000000000..0291edae5 --- /dev/null +++ b/server/store/datastore/migration/006_log_data_type.go @@ -0,0 +1,27 @@ +package migration + +import ( + "xorm.io/xorm" + "xorm.io/xorm/schemas" +) + +var alterTableLogUpdateColumnLogDataType = task{ + name: "alter-table-logs-update-type-of-data", + fn: func(sess *xorm.Session) (err error) { + dialect := sess.Engine().Dialect().URI().DBType + + switch dialect { + case schemas.POSTGRES: + _, err = sess.Exec("ALTER TABLE logs ALTER COLUMN log_data TYPE BYTEA") + case schemas.MYSQL: + _, err = sess.Exec("ALTER TABLE logs MODIFY COLUMN log_data LONGBLOB") + case schemas.MSSQL: + _, err = sess.Exec("ALTER TABLE logs MODIFY COLUMN log_data VARBINARY") + default: + // sqlite does only know BLOB in all cases + return nil + } + + return err + }, +} diff --git a/server/store/datastore/migration/migration.go b/server/store/datastore/migration/migration.go index 7c165c433..bc5f6e814 100644 --- a/server/store/datastore/migration/migration.go +++ b/server/store/datastore/migration/migration.go @@ -33,6 +33,7 @@ var migrationTasks = []*task{ &fixPRSecretEventName, &alterTableReposDropCounter, &dropSenders, + &alterTableLogUpdateColumnLogDataType, } var allBeans = []interface{}{