我收到此错误
Scan error on column index 1: converting string "<nil>" to a int64:
strconv.ParseInt: parsing "<nil>": invalid syntax
尝试运行这个简单的代码时:
var id int64
var replyTo *int64
replyTo = new(int64)
query := `
SELECT id, reply_to
FROM message
WHERE id = 211
LIMIT 1;
`
if err := sql.DB.QueryRow(query).Scan(&id, replyTo); err != nil {
log.Println(err)
}
spew.Dump(id, replyTo)
我选择的表格如下:
如果我将选择查询更改为:WHERE id = 210
,而不是211,那么它可以正常工作。
sql.DB只是sqlx库的一个实例。
var DB *sqlx.DB
我正在使用一个指针来捕获数据库中的NULL列。我正在使用指针,因为我不确定sql.NullInt64是否适用于sqlx库。
为什么会出现此错误?我该怎么办呢?
答案 0 :(得分:1)
override func viewWillAppear(animated: Bool) {
self.navigationController?.navigationBarHidden = true
}
需要一个指向指针的指针才能使其工作:
Scan
然后在使用值var id int64
var replyTo *int64
replyTo = new(int64)
query := `
SELECT id, reply_to
FROM message
WHERE id = 211
LIMIT 1;
`
// The change is here : &replyTo instead of just replyTo
if err := sql.DB.QueryRow(query).Scan(&id, &replyTo); err != nil {
log.Println(err)
}
spew.Dump(id, replyTo)
replyTo == nil
替代解决方案:使用*replyTo
:https://golang.org/pkg/database/sql/#NullInt64