Go语言执行数据写入问题求助

——————————————以下为插入数据报错日志————————————————
执行SQL: INSERT INTO ems.anual_SME_ES_TEST_2503_003 USING ems.anual_status (ess_id) TAGS ( ? ) (ts, update_time, bms_rack_control, off_grid_control, control_mode, active_power, reactive_power, black_start_state) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? )
SQL参数:
SME_ES_TEST_2503_003
2030-07-07 12:00:00
2026-01-20 13:44:39
1
1
4
-10
0
0
2026/01/20 13:44:39 存储Anual失败: [0x216] syntax error near ‘sme_es_test_2503_003 ) (ts, update_time, bms_rack_control, off’ (invalid data or symbol)
PS:相同sql语句,在Java中可以正常执行
——————————————以下为插入数据代码————————————————

package storage

import (
	"database/sql"
	"fmt"
	"strings"
)

type Fields struct {
	FieldName  string
	FieldValue interface{}
}

type TaosSuperTables struct {
	BaseDbName     string
	SuperTableName string
	TableName      string
	SchemaFields   []Fields
	TagsFields     []Fields
}

var DBConn *sql.DB

func SetDB(db *sql.DB) {
	DBConn = db
}

func placeholder(columnSize int) string {
	var sb strings.Builder
	sb.WriteString(" ( ")
	for i := 0; i < columnSize; i++ {
		if i > 0 {
			sb.WriteString(" , ")
		}
		sb.WriteString("?")
	}
	sb.WriteString(" ) ")
	return sb.String()
}

func InsertData(db *sql.DB, table TaosSuperTables) error {
	var tagValues []interface{}
	var fieldValues []interface{}

	var sql strings.Builder
	sql.WriteString("INSERT INTO `")
	sql.WriteString(table.BaseDbName)
	sql.WriteString("`.")
	sql.WriteString(table.TableName)
	sql.WriteString(" USING `")
	sql.WriteString(table.BaseDbName)
	sql.WriteString("`.`")
	sql.WriteString(table.SuperTableName)
	sql.WriteString("`")

	var tagFields []string
	for _, f := range table.TagsFields {
		tagFields = append(tagFields, f.FieldName)
		tagValues = append(tagValues, f.FieldValue)
	}
	sql.WriteString(" (")
	sql.WriteString(strings.Join(tagFields, ", "))
	sql.WriteString(") TAGS")
	sql.WriteString(placeholder(len(tagValues)))

	var schemaFields []string
	for _, f := range table.SchemaFields {
		schemaFields = append(schemaFields, f.FieldName)
		fieldValues = append(fieldValues, f.FieldValue)
	}
	sql.WriteString(" (")
	sql.WriteString(strings.Join(schemaFields, ", "))
	sql.WriteString(") VALUES")
	sql.WriteString(placeholder(len(fieldValues)))

	allValues := append(tagValues, fieldValues...)

	_, err := db.Exec(sql.String(), allValues...)

	if err != nil {
		fmt.Printf("执行SQL: %s\n", sql.String())
		fmt.Println("SQL参数:")
		for _, value := range allValues {
			fmt.Printf("%v\n", value)
		}
	}

	return err
}

总结

此文本将被隐藏


请看下上下两个表名不一致,一是前缀不见了,二是大小写变了。如果表名要大小写混用,且有特殊字符,请使用反单引号`,把表象括起来。