我将整个代码库从PHP切换到Go,在运行的多个过程中,我随机遇到此错误:
[mysql] 2016/10/11 09:17:16 packets.go:33: unexpected EOF
这是我的db软件包,用于处理与数据库的所有连接:
package db
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"pkg/db"
)
var connection *sql.DB
var err error
func GetConnection() *sql.DB {
if connection != nil {
fmt.Println("********** CHECKING PING")
err = connection.Ping()
if err == nil {
fmt.Println("************ CONNECTION STILL ACTIVE")
return connection
} else {
fmt.Println("********** PING ERROR: " + err.Error())
}
}
connection, err = sql.Open("mysql", db.DEVUSER + ":" + db.DEVUSER_PASSWORD + "@tcp(localhost:3306)/main?parseTime=true")
if err != nil {
panic(err)
}
return connection
}
我对此数据库包做错了什么,导致引发了此错误?该错误的确切含义是什么?如果打开了一个连接,我确保返回当前连接,因此对于多个请求,它使用同一连接对象。
这是mysql packet.go的摘录:
// Read packet to buffer 'data'
func (mc *mysqlConn) readPacket() ([]byte, error) {
var payload []byte
for {
// Read packet header
data, err := mc.buf.readNext(4)
if err != nil {
errLog.Print(err)
mc.Close()
return nil, driver.ErrBadConn
}
// Packet Length [24 bit]
pktLen := int(uint32(data[0]) | uint32(data[1])<<8 | uint32(data[2])<<16)
if pktLen < 1 {
errLog.Print(ErrMalformPkt)
mc.Close()
return nil, driver.ErrBadConn
}
// Check Packet Sync [8 bit]
if data[3] != mc.sequence {
if data[3] > mc.sequence {
return nil, ErrPktSyncMul
}
return nil, ErrPktSync
}
mc.sequence++
// Read packet body [pktLen bytes]
data, err = mc.buf.readNext(pktLen)
if err != nil {
errLog.Print(err)
mc.Close()
return nil, driver.ErrBadConn
}
isLastPacket := (pktLen < maxPacketSize)
// Zero allocations for non-splitting packets
if isLastPacket && payload == nil {
return data, nil
}
payload = append(payload, data...)
if isLastPacket {
return payload, nil
}
}
}
第一个“ errLog.Print(err)”是“读取数据包头”部分中的第33行。
任何帮助是极大的赞赏!
我在连接包中添加了一些log.Println并让进程运行,就在出现此错误的地方,这就是控制台打印的内容:
********** CHECKING PING
************ CONNECTION STILL ACTIVE
[mysql] 2016/10/11 11:57:27 packets.go:33: unexpected EOF
********** CHECKING PING
************ CONNECTION STILL ACTIVE
看起来github问题的链接提供了此修复程序。至少对于我来说,此修复程序是将 MaxIdleConnections
设置为0。我已将服务器保持24小时的运行状态,每隔几个小时对它运行一次查询,但尚未重现该错误。
感谢@city提供链接。
注:与此问题类似,但不相同。 我有一个快速js节点网站(WIP),但我一直得到以下错误: 我的: 文件只是一个基本的jade文件,描述了一个简单的引导navbar,因此我将省略它。 : 现在,当我访问时,除了
我试图将SOAP消息发送到另一个web服务,但是我得到的响应抛出一个错误:“无法创建SOAP消息,原因是异常:XML reader错误:com.ctc.wstx.exc.wstxeofException:Prolog中的意外EOF”。 web服务用Java编写,客户端用VB.NET编写。
我有一个索引php页面,其中包含一个打印数组值的代码
问题内容: 我是Python的新手,正在收到此错误: 在这段代码上: 问题答案: 尽管缩进错误在StackOverflow页面上很明显,但它们可能不在您的编辑器中。您在这里混合使用不同的缩进类型,1、4和8个空格。根据PEP8,您应始终使用四个空格进行缩进。您还应该避免混用制表符和空格。 我还建议您尝试使用‘ ‘命令行选项 来运行脚本,以确定何时意外混合使用制表符和空格。当然,任何体面的编辑器都可
我以前从未遇到过这种情况,但现在我们开始: 有什么想法吗? 运行php fpm 5.3 Ubuntu 看起来好像评论不起作用...
问题内容: 我尝试了以下简单的JavaScript代码: 例如,在Chrome控制台中,这将返回 SyntaxError:意外令牌: 我在JSONLint上尝试了JSON ,它是有效的。 您看到错误了吗? 问题答案: FWIW,改为使用。比。