Przeglądaj źródła

update:本地数据导出到线上,本地表不存在提示错误

zoie 3 miesięcy temu
rodzic
commit
a8e7ed1048
3 zmienionych plików z 51 dodań i 8 usunięć
  1. 20 8
      Nats/Nats.go
  2. 10 0
      controllers/TaskData.go
  3. 21 0
      models/Task/TaskData.go

+ 20 - 8
Nats/Nats.go

@@ -200,17 +200,29 @@ func NatsInit() {
 			logs.Println("创建sql临时文件失败")
 		}
 		sql_file := fmt.Sprintf("%sz_task_data_%s.sql", conf.Sql_Temp_Dir, T_task_id)
-		org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
-		if err != nil {
-			logs.Error(lib.FuncName(), "导出本地数据失败")
-			return
+
+		var org string
+
+		//导出线上数据
+		logs.Info("--------开始导出本地数据---------")
+		i := 0
+		for i < 10 {
+			org, err = Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
+			if err != nil {
+				logs.Error(lib.FuncName(), "导出本地数据失败", err)
+			} else {
+				System.Add_UserLogs_T(T_uuid, "任务数据-导出本地数据失败", "z_task_data_"+T_task_id, org)
+				break
+			}
+			i++
 		}
-		System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "z_task_data_"+T_task_id, org)
+
+
 
 		logs.Info("--------开始导入数据到【线上】---------")
-		i := 0
+		j := 0
 		flag := false
-		for i < 10 {
+		for j < 10 {
 			Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
 			time.Sleep(2 * time.Second)
 			org, err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
@@ -223,7 +235,7 @@ func NatsInit() {
 					break
 				}
 			}
-			i++
+			j++
 		}
 		// 重试10次后仍然没有成功导入数据
 		if !flag {

+ 10 - 0
controllers/TaskData.go

@@ -1439,6 +1439,14 @@ func (c *TaskDataController) TaskData_Up_TaskData_Back() {
 		return
 	}
 
+	exist := Task.CheckTableExist(conf.Local_AliasName, T_task_id)
+	if !exist {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "本地数据不存在!"}
+		c.ServeJSON()
+		return
+	}
+
+
 	// 采集中
 	Task_r.T_delivery_state = 2
 	err = NatsServer.Update_Task(Task_r)
@@ -1448,6 +1456,8 @@ func (c *TaskDataController) TaskData_Up_TaskData_Back() {
 		return
 	}
 
+
+
 	data := Nats.Up_TaskData_Back{
 		T_uuid: T_uuid,
 		Task:   Task_r,

+ 21 - 0
models/Task/TaskData.go

@@ -10,6 +10,7 @@ import (
 	_ "github.com/astaxie/beego/cache/redis"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
+	"github.com/go-sql-driver/mysql"
 	_ "github.com/go-sql-driver/mysql"
 	"strconv"
 	"strings"
@@ -133,6 +134,11 @@ func Truncate_TaskData(alias_name, T_task_id string) bool {
 	logs.Println(sql)
 	_, err := o.Raw(sql).Exec()
 	if err != nil {
+		// 数据库表不存在,则创建数据库
+		if err.(*mysql.MySQLError).Number == 1146 {
+			CREATE_TaskData(alias_name, T_task_id)
+			return true
+		}
 		logs.Error(lib.FuncName(), err)
 		return false
 	}
@@ -1003,3 +1009,18 @@ func DeleteDeduplicate(T_task_id string) (int64, error) {
 	}
 	return cnt, nil
 }
+
+func CheckTableExist(alias_name, T_task_id string) bool {
+	o := orm2.NewOrmUsingDB(alias_name)
+
+	sql := "select count(ID) from z_task_data_" + T_task_id
+	_, err := o.Raw(sql).Exec()
+	if err != nil {
+		// 数据库表不存在,则创建数据库
+		logs.Error(lib.FuncName(), err)
+		if err.(*mysql.MySQLError).Number == 1146 {
+			return false
+		}
+	}
+	return true
+}