注册

golang读取 DBMS_OUTPUT.GET_LINES 错误 driver: bad connection

流年 2024/07/10 417 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:win11
【CPU】:i7-12700H 64位
【问题描述】*:返回错误 driver: bad connection

代码如下:

package main

import (
	"context"
	"database/sql"
	_ "dm"
	"log"
)

func Connect(options ...string) (*sql.DB, error) {

	connString := "dm://用户名:密码@127.0.0.1:5236"
	connString += "?logDir=D:\\logs\\&logLevel=all"

	db, err := sql.Open("dm", connString)
	return db, err
}

func main() {
	ctx := context.Background()
	db, err := Connect()
	if err != nil {
		log.Println("连接错误" + err.Error())
		return
	}
	if db.Ping() != nil {
		log.Println("连接错误 PING")
		return
	}
	log.Println("数据库连接成功")

	tx, err := db.BeginTx(ctx, nil)
	if err != nil {
		log.Println("开启事务错误" + err.Error())
		return
	}
	_, err = tx.ExecContext(ctx, `begin DBMS_OUTPUT.ENABLE();end`)
	if err != nil {
		log.Println("DBMS_OUTPUT.ENABLE err:", err)
		return
	}

	_, err = tx.ExecContext(ctx, `BEGIN
	  DBMS_OUTPUT.PUT_LINE('1111111');
	  DBMS_OUTPUT.PUT_LINE('2222222');
	END`)

	if err != nil {
		log.Println("DBMS_OUTPUT.PUT_LINE err:", err)
		return
	}

	var lines []byte
	//lines := make([]byte, 32767)
	var numLines int64 = 2
	outP1 := sql.Out{Dest: &lines}
	outP2 := sql.Out{Dest: &numLines, In: true}
	_, err = tx.ExecContext(ctx, `BEGIN DBMS_OUTPUT.GET_LINES(?,?); END `, outP1, outP2)
	if err != nil {
		log.Println(err)
		return
	}
	log.Println(lines, numLines)

	tx.Rollback()

}


补充:dm_DMSERVER_202407.log日志中出线了
[ERROR] database P0000027988 T0000000000000019856 cmd 13 validate error!

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