近来在学习go语言和postgres数据库,用来做一个小的web项目。因为go语言的开发者还不是很多,网上能用的资料比较少,再加上使用go连接postgres数据库的技术栈更是冷门,所以记录一下其中遇到的坑,希望能帮到有缘人。
go语言有几个web框架,网上很多描述,查了很多资料我选择了beego。beego是一个完整的mvc框架,功能模块比较完善,过滤器、session管理、orm操作等等都有封装好的模块,比起gin少了很多需要组装的活,所以就打算从它开始。
beego框架有一个命令行工具 bee,使用bee可以快速创建beego项目,但是我在第一步就遇到了坑
数据库连接不上
beego的官方文档上写的连接数据库创建项目的命令是
bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:<password>@tcp(127.0.0.1:3306)/test"]
重点看conn这个参数,这个参数值是按照MySQL的驱动连接格式来写的,用在postgres 数据库根本就不行,后来我在网上找postgres的连接方式发现它的格式是这样的
psql postgres://username:password@host:port/dbname
psql -U username -h hostname -p port -d dbname
我选了第一种,还是报错 : SSL is not enabled on the server。这个问题就好解决了,网上一搜还需要加上?sslmode=disable。同时因为我的pg数据库里使用了模式,所以在连接字符串里还需要加上&search_path=模式名。完整的连接就是:
postgres://username:password@host:port/dbname?sslmode=disable&search_path=schemaname