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

时间:2015-06-19 18:43:47

标签: go

我遇到了一个似乎无法解决的问题,可能是由于我对GO缺乏经验。我有以下代码在一台服务器上工作,但在另一台服务器上没有。这是代码:

// 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\n", 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
}

在读取if !rows.Next()的行上,我收到以下错误:

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]

这个相同的代码在另一台服务器上运行正常,在两台机器上运行GO版本1.4.2。我有一种感觉,我在这里的某处有一些不好的语法,但不知道真正的问题是什么。在同一个文件中调用db.Exec的工作正常,这让我相信我的数据库连接完全正常,但由于某种原因db.Query没有正确执行。

1 个答案:

答案 0 :(得分:1)

setupSelectAll: function () { $('.selectedId').change(function () { var $input = $(this); var $allInputs = $input .closest('ul') .find('.selectedId'); var $selectAll = $input.closest('ul').find('.selectAll'); var totalInputs = $allInputs.length; var numberChecked = $allInputs.filter(":checked").length; $selectAll.prop('checked', totalInputs === numberChecked); }); }, setupChangeHandler: function () { var app = this; $('.job-role-filter .selectedId, .reg-type-filter .selectedId').change( _.debounce(function (){ var $input = $(this); app.updateMap(); app.updateChart(); }, 100) ); $('.selectAll').change(function (){ var $selectAll = $(this); $selectAll.closest('ul') .find('.selectedId') .prop('checked', $selectAll.prop('checked')) .change(); }); }, getCheckedOptions: function () { this._checkedOptions = { jobRole: $('.job-role-filter input:checked').map(function () { return $(this).attr('id'); }), regType: $('.reg-type-filter input:checked').map(function () { return $(this).attr('id'); }), }; }, 可能存在错误。检查您的错误,如果错误不是db.Query,请假设nilrows。即呼叫nil将是段错误。 如果您显示错误,您可能会发现问题所在。