Fix sql migration query for mysql
This commit is contained in:
parent
557be7c334
commit
155371a3fd
|
@ -31,25 +31,29 @@ func init() {
|
|||
|
||||
convertTime := func(table, column string) error {
|
||||
|
||||
var sql string
|
||||
var sql []string
|
||||
|
||||
switch tx.Dialect().URI().DBType {
|
||||
case schemas.POSTGRES:
|
||||
sql = `
|
||||
sql = []string{`
|
||||
ALTER TABLE ` + table + ` DROP COLUMN IF EXISTS ` + column + `_ts;
|
||||
ALTER TABLE ` + table + ` ADD COLUMN ` + column + `_ts TIMESTAMP WITHOUT TIME ZONE NULL;
|
||||
UPDATE ` + table + ` SET ` + column + `_ts = TIMESTAMP 'epoch' + ` + column + ` * INTERVAL '1 second';
|
||||
ALTER TABLE ` + table + ` ALTER COLUMN ` + column + ` TYPE TIMESTAMP USING ` + column + `_ts;
|
||||
ALTER TABLE ` + table + ` DROP COLUMN ` + column + `_ts;
|
||||
`
|
||||
`}
|
||||
case schemas.MYSQL:
|
||||
sql = `
|
||||
ALTER TABLE ` + table + ` DROP COLUMN IF EXISTS ` + column + `_ts;
|
||||
ALTER TABLE ` + table + ` ADD ` + column + `_ts DATETIME null;
|
||||
UPDATE ` + table + ` SET ` + column + `_ts = FROM_UNIXTIME(` + column + `);
|
||||
ALTER TABLE ` + table + ` DROP COLUMN ` + column + `;
|
||||
ALTER TABLE ` + table + ` CHANGE ` + column + `_ts ` + column + ` DATETIME NOT NULL;
|
||||
`
|
||||
|
||||
colOld := "`" + column + "`"
|
||||
colNew := "`" + column + `_ts` + "`"
|
||||
|
||||
sql = []string{
|
||||
"ALTER TABLE " + table + " DROP COLUMN IF EXISTS " + colNew + ";",
|
||||
"ALTER TABLE " + table + " ADD COLUMN " + colNew + " DATETIME NULL;",
|
||||
"UPDATE " + table + " SET " + colNew + " = FROM_UNIXTIME(" + colOld + ");",
|
||||
"ALTER TABLE " + table + " DROP COLUMN " + colOld + ";",
|
||||
"ALTER TABLE " + table + " CHANGE " + colNew + " " + colOld + " DATETIME NOT NULL;",
|
||||
}
|
||||
case schemas.SQLITE:
|
||||
// welp
|
||||
default:
|
||||
|
@ -60,10 +64,12 @@ ALTER TABLE ` + table + ` CHANGE ` + column + `_ts ` + column + ` DATETIME NOT N
|
|||
if err := sess.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := sess.Exec(sql)
|
||||
if err != nil {
|
||||
_ = sess.Rollback()
|
||||
return err
|
||||
for _, s := range sql {
|
||||
_, err := sess.Exec(s)
|
||||
if err != nil {
|
||||
_ = sess.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := sess.Commit(); err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue