我一直在寻找如何将Golang应用程序连接到MySQL数据库(我使用带有数据库/ sql接口的MyMySQL库)。如果我使用none本机版本而不是数据库/ sql接口,我可以使连接完美地工作并执行查询。如果我尝试使用数据库/ sql go接口连接(我认为这是与MySQL接口的最佳方式?)那么我只是无法使连接工作?我一直得到的错误是“URI的数据库部分错误”?????
很抱歉变量名称,但我一直在努力尝试各种版本的工作,所以这些名字有点令人难过。
感谢任何帮助理解我的问题,再次感谢您的时间。
答案 0 :(得分:2)
mymysql包定义了使用database/sql
包(来自their readme)时访问MySQL的非标准URI格式:
[PROTOCOL_SPECIFIC*]DBNAME/USER/PASSWD
因此,在您的情况下,您希望将格式字符串更改为:
connectionStr := fmt.Sprintf("tcp:%s:3306,%s/%s/%s", database, dbname, user, password)
您看到错误的原因是Open
函数根据/
将URI拆分为3个部分(请参阅this),如果发现少于三部分。
另外,除非您有充分的理由选择mymysql
,否则您应该考虑使用go-sql-driver/mysql,因为它是一个优秀的MySQL驱动程序,并支持您已定义的标准MySQL DSN。