为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【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!
有希望解决吗??
可能连接串写的有问题,看这个可以参考么:
https://eco.dameng.com/document/dm/zh-cn/pm/go-rogramming-guide.html
有希望解决吗??
有希望解决吗??
程序输出内容:
2024/07/10 16:37:11 数据库连接成功
2024/07/10 16:37:11 driver: bad connection