sql.Open返回的err形同虚设,我使用github.com/sql/mysql的驱动

lightbee · · 1656 次点击
Open函数是验证其参数,而不创建与数据库的连接。要检查数据源的名称是否合法,应调用返回值的Ping方法,ping会检查数据库的连接是否有效
#1
更多评论
嗯,官方文档确实也说明这个情况,但是你说”Open函数不创建与数据库的连接“,这句话着实令人费解,如果是这样的话,难道要用Ping来进行连接?可是我不调用Ping的情况下,还是可以进行操作。如果不是用Ping的话,那又是用什么来进行数据库的连接操作呢?望解答。
#2
open函数返回的是一个*DB,你可以理解创建了一个连接池,每次操作会从这个池子中取出一个连接去进行数据库操作,你可以理解成每个连接带的参数就是open中设置的参数,go会维护这个连接池,ping只是检查数据库的连接是否有效,并不是你说的需要用ping来连接。所以一般来说在open后有些人会带上Db.ping()来检查是否成功连接。
#3