dongqiu3709 2015-06-19 18:43
浏览 51
已采纳

go-mssql的“无效的内存地址”错误

I'm having an issue that I can't seem to resolve, probably due to my inexperience with GO. I have the following code working on one server, but not on another. Here is the code:

// Build out the connection string to the database, and then open the connection to the database.
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d", *server, *user, *password, *port)
if *debug { fmt.Printf(" connString:%s
", connString) }
db, err = sql.Open("mssql", connString)
if err != nil { log.Fatal("Open connection failed:", err.Error()) }
err = db.Ping()
if err != nil {
    fmt.Println("Cannot connect: ", err.Error())
    return
}

rows, _ := db.Query( "SELECT Zip FROM Zip_Rural WHERE Zip = ?", ZipCode[0:5] )
defer rows.Close()

if !rows.Next() {
    acreageRequirement = .5
}

On the line that reads if !rows.Next() I get the following error:

panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x20 pc=0x477918]

This same code works just fine on another server, running GO version 1.4.2 on both machines. I have a feeling I just have some bad syntax somewhere in here, but have no idea what the real problem is. A call to db.Exec within the same file works just fine, which leads me to believe that my database connection is perfectly fine, but for some reason db.Query is not executing correctly.

  • 写回答

1条回答 默认 最新

  • dtt83024 2015-06-19 18:53
    关注

    There is probably an error with db.Query. Check your error and if it is not nil, assume that rows is nil. i.e. calling rows.Next() will segfault. If you display the error, you will probably find out what the issue is.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题