mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +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