注册

dm数据库开通传输加密(COMM_ENCRYPT_NAME)后,go驱动异常,但是odbc驱动正常;

star 2023/01/28 1061 2

【DM版本】:dm8_20210616_FTarm_kylin4_64_ent_8.6.2.2.iso
【操作系统】:Linux kylin10-sp2 4.19.90-24.4.v2101.ky10.aarch64 (我感觉和操作系统的关系不大,应该是通用问题)
【CPU】: ARMv8 CPU
【问题描述】*:
1、现场用户反馈达梦数据库开通了等保参数后,产品异常;具体报错是:
Error 6001: 网络通信异常 dm/security: input not full blocks
2、进一步定位是由于开启了COMM_ENCRYPT_NAME=AES128_ECB引起;
3、达梦修改COMM_ENCRYPT_NAME=AES128_ECB的方法为:
修改:dm.ini中的COMM_ENCRYPT_NAME为AES128_ECB然后重启服务即可;
自测方法:可以参考:https://eco.dameng.com/document-preview/dm/zh-cn/app-dev/go-go-old

 package main
// 引入相关包
import (
	"database/sql"
	_ "dm"
	"fmt"
)
var db *sql.DB
var err error

/* 创建数据库连接 */
func connect(driverName string, dataSourceName string) (*sql.DB, error) {
	var db *sql.DB
	var err error
	if db, err = sql.Open(driverName, dataSourceName); err != nil {
		return nil, err
	}
	if err = db.Ping(); err != nil {
		return nil, err
	}
	fmt.Printf("connect to \"%s\" succeed.\n", dataSourceName)
	return db, nil
}

func main() {
	driverName := "dm"
	dataSourceName := "dm://user:pwd@ip:port?socketTimeout=10&logLevel=info"
	if db, err = connect(driverName, dataSourceName); err != nil {
		fmt.Println(err)
		return
	}
}

4、报错如下:image.png

回答 0
暂无回答
扫一扫
联系客服