Golang 连接到 SQL Server 错误 - “TLS 握手失败:无法读取握手数据包:

我编写了一个系统,该系统可以自动执行在 Microsoft Azure 上部署 VM 的过程,在其上安装 Sql Server,然后.sql针对新安装的服务器执行脚本以初始化环境。周五,这一切都按预期进行。今天,我收到此错误。


我的代码有以下相关导入:


import(

    "database/sql"

    _ "github.com/denisenkom/go-mssqldb"

)

并在安装后使用以下代码实际连接到数据库(为简洁起见,删除了错误处理):


// variables

connectionString := "sqlserver://MasterUser:MasterPassword@xx.xx.xx.xxx:1433"

dbName := "mssql"

// open database / get metadata sorted

db, err := sql.Open(dbname, connectionString)

defer db.Close()

//Check to see if the connection is successful. 

err = db.Ping()                                         // <--------

// file input

fileBytes, err := ioutil.ReadFile("../sql/" + dbsql)

fileReader := bytes.NewReader(fileBytes)

// parse line-by-line

scanner := bufio.NewScanner(fileReader)

lineNo := 0

for scanner.Scan() {

    toExec := scanner.Text()

    lineNo += 1

    _, err = db.Exec(toExec)                           // <--------

}

该错误发生在两个db.Ping()和每个 上db.Exec()。在这些情况下,关联的消息err是


TLS Handshake failed: Cannot read handshake packet: EOF

这可能是相关的,但我不知道如何。


造成这种情况的原因是什么?如何解决?错误是在我的代码中、在我创建的充当服务器的虚拟机上还是在两者之间?我该如何最好地解决这个问题?


九州编程
浏览 338回答 1
1回答

翻翻过去那场雪

我最终解决了这个问题,但没有找出根本原因。当我尝试通过 SSH 连接到虚拟机并在本地访问数据库时,我遇到了以下错误:Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2746. Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.它看起来是一个版本控制问题 - 在我的安装脚本中,我替换了sudo apt-get -y install mssql-server和sudo apt-get -y install mssql-server=14.0.3192.2-2然后问题就消失了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go