golang笔记:unsupported driver -> Scan pair: <nil> -> *string
2015-10-12 11:03
489 查看
golang里,操作mysql数据库,使用查询语句的时候,一般的写法
当查出来的字段有NULL的时候,就会报这样的错误unsupported driver -> Scan pair: <nil> -> *string
这又是由于Go语言对数据类型的严格限制。name的类型是string,所以只能接受string类型的值,而此处nil是为空的指针类型。最佳解决办法是——插入记录的时候不要有NULL存在。
但是根据我的数据库设计,有的联合查询语句必然会返回NULL值,因此另一种解决办法是将name字段定义为指针类型
其实只是改了name的类型定义一处,其余不变。当查询结果为NULL时,name的值为nil。当查询结果为字符串时,Go会将name的值赋为指向该字符串的指针,如此就能解决问题啦!
rows, err := db.Query("select name from table") if err != nil { return } for rows.Next() { var name string err = rows.Scan(&name) if err != nil { return } }
当查出来的字段有NULL的时候,就会报这样的错误unsupported driver -> Scan pair: <nil> -> *string
这又是由于Go语言对数据类型的严格限制。name的类型是string,所以只能接受string类型的值,而此处nil是为空的指针类型。最佳解决办法是——插入记录的时候不要有NULL存在。
但是根据我的数据库设计,有的联合查询语句必然会返回NULL值,因此另一种解决办法是将name字段定义为指针类型
rows, err := db.Query("SELECT name from table) if err != nil { return } for rows.Next() { var name *string err = rows.Scan(&name) if err != nil { return } }
其实只是改了name的类型定义一处,其余不变。当查询结果为NULL时,name的值为nil。当查询结果为字符串时,Go会将name的值赋为指向该字符串的指针,如此就能解决问题啦!
相关文章推荐
- At least one JAR was scanned for TLDs yet contained no TLDs.
- 从Clarifai的估值聊聊深度学习
- leetcode --Contains Duplicate II
- 2014 Regionals 2014 :: Asia - ShangHai World Cup
- leetcode 217--Contains Duplicate
- Cmder&nbsp;alais&nbsp;设置
- Failed&nbsp;to&nbsp;open&nbsp;the&nbsp;HAX&nbsp;device!
- Rails读书笔记第六章
- Rails读书笔记第四章
- 从telnet www.baidu.com 80来玩一下http
- 常见的扫描类型有以下几种:Nmap的SYN、Connect、Null、FIN、Xmas、Maimon、ACK
- 10003---Trail ~ New Extension
- 10002---Trail ~ Goal
- HDU 4770 Lights Against Dudely(暴力枚举) 2013杭州现场赛
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- Easier Done Than Said?
- 第 二 十 七 天 :iRedMail 搭 建 邮 件 服 务 器
- 10001---Trail ~ Preparation
- hdu1789Doing Homework again
- hdu 1021 Fibonacci Again