mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-07 10:40:25 +08:00
升级时SQL出错时提示对应的操作
This commit is contained in:
@@ -117,15 +117,16 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (
|
|||||||
|
|
||||||
// 新增表格
|
// 新增表格
|
||||||
for _, newTable := range newResult.Tables {
|
for _, newTable := range newResult.Tables {
|
||||||
oldTable := currentResult.FindTable(newTable.Name)
|
var oldTable = currentResult.FindTable(newTable.Name)
|
||||||
if oldTable == nil {
|
if oldTable == nil {
|
||||||
ops = append(ops, "+ table "+newTable.Name)
|
var op = "+ table " + newTable.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("+ table " + newTable.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec(newTable.Definition)
|
_, err = db.Exec(newTable.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
} else if oldTable.Definition != newTable.Definition {
|
} else if oldTable.Definition != newTable.Definition {
|
||||||
// 对比字段
|
// 对比字段
|
||||||
@@ -133,22 +134,24 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (
|
|||||||
for _, newField := range newTable.Fields {
|
for _, newField := range newTable.Fields {
|
||||||
oldField := oldTable.FindField(newField.Name)
|
oldField := oldTable.FindField(newField.Name)
|
||||||
if oldField == nil {
|
if oldField == nil {
|
||||||
ops = append(ops, "+ "+newTable.Name+" "+newField.Name)
|
var op = "+ " + newTable.Name + " " + newField.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("+ " + newTable.Name + " " + newField.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD `" + newField.Name + "` " + newField.Definition)
|
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD `" + newField.Name + "` " + newField.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
} else if !newField.EqualDefinition(oldField.Definition) {
|
} else if !newField.EqualDefinition(oldField.Definition) {
|
||||||
ops = append(ops, "* "+newTable.Name+" "+newField.Name)
|
var op = "* " + newTable.Name + " " + newField.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("* " + newTable.Name + " " + newField.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " MODIFY `" + newField.Name + "` " + newField.Definition)
|
_, err = db.Exec("ALTER TABLE " + newTable.Name + " MODIFY `" + newField.Name + "` " + newField.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -158,31 +161,33 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (
|
|||||||
for _, newIndex := range newTable.Indexes {
|
for _, newIndex := range newTable.Indexes {
|
||||||
oldIndex := oldTable.FindIndex(newIndex.Name)
|
oldIndex := oldTable.FindIndex(newIndex.Name)
|
||||||
if oldIndex == nil {
|
if oldIndex == nil {
|
||||||
ops = append(ops, "+ index "+newTable.Name+" "+newIndex.Name)
|
var op = "+ index " + newTable.Name + " " + newIndex.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("+ index " + newTable.Name + " " + newIndex.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD " + newIndex.Definition)
|
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD " + newIndex.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = this.tryCreateIndex(err, db, newTable.Name, newIndex.Definition)
|
err = this.tryCreateIndex(err, db, newTable.Name, newIndex.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if oldIndex.Definition != newIndex.Definition {
|
} else if oldIndex.Definition != newIndex.Definition {
|
||||||
ops = append(ops, "* index "+newTable.Name+" "+newIndex.Name)
|
var op = "* index " + newTable.Name + " " + newIndex.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("* index " + newTable.Name + " " + newIndex.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " DROP KEY " + newIndex.Name)
|
_, err = db.Exec("ALTER TABLE " + newTable.Name + " DROP KEY " + newIndex.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' drop old key failed: " + err.Error())
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD " + newIndex.Definition)
|
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD " + newIndex.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = this.tryCreateIndex(err, db, newTable.Name, newIndex.Definition)
|
err = this.tryCreateIndex(err, db, newTable.Name, newIndex.Definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,13 +197,14 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (
|
|||||||
for _, oldIndex := range oldTable.Indexes {
|
for _, oldIndex := range oldTable.Indexes {
|
||||||
newIndex := newTable.FindIndex(oldIndex.Name)
|
newIndex := newTable.FindIndex(oldIndex.Name)
|
||||||
if newIndex == nil {
|
if newIndex == nil {
|
||||||
ops = append(ops, "- index "+oldTable.Name+" "+oldIndex.Name)
|
var op = "- index " + oldTable.Name + " " + oldIndex.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("- index " + oldTable.Name + " " + oldIndex.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP KEY " + oldIndex.Name)
|
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP KEY " + oldIndex.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,13 +214,14 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (
|
|||||||
for _, oldField := range oldTable.Fields {
|
for _, oldField := range oldTable.Fields {
|
||||||
newField := newTable.FindField(oldField.Name)
|
newField := newTable.FindField(oldField.Name)
|
||||||
if newField == nil {
|
if newField == nil {
|
||||||
ops = append(ops, "- field "+oldTable.Name+" "+oldField.Name)
|
var op = "- field " + oldTable.Name + " " + oldField.Name
|
||||||
|
ops = append(ops, op)
|
||||||
if showLog {
|
if showLog {
|
||||||
fmt.Println("- field " + oldTable.Name + " " + oldField.Name)
|
fmt.Println(op)
|
||||||
}
|
}
|
||||||
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP COLUMN `" + oldField.Name + "`")
|
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP COLUMN `" + oldField.Name + "`")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.New("'" + op + "' failed: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user