楼主不妨试试看下面的这两种方法:
"DataSource": "user=mmuser password='pg@most' dbname=mattermost sslmode=disable connect_timeout=10"
"DataSource": "postgres://mmuser:'pg@most'@localhost:5432/mattermost?sslmode=disable\u0026connect_timeout=10"
下面附上解题思路:
1. 从楼主的配置中可以看到一个关键词叫做 mattermost
2. Google "mattermost" 可以找到 GitHub:
https://github.com/mattermost/mattermost-server3. 在 GitHub 顶端搜索 DataSource 可以找到建立数据库连接的代码:
https://github.com/mattermost/mattermost-server/blob/2ca222033cfd1d10f5e72228356665e4dbe31a55/store/sqlstore/supplier.go#L2074. 往上翻可以看到 dbsql 是 "database/sql"
5. 不是很懂 golang,所以 Google 搜索了一下 "golang database/sql",找到了文档
https://golang.org/pkg/database/sql/#Open6. 发现这是在 golang 标准库里面的,但是文档上面说标准库不包含任何驱动,"See
https://golang.org/s/sqldrivers for a list of third-party drivers"
7. 从上面的列表里面可以看到有个 Postgres 的驱动:
https://github.com/lib/pq8. 从 lib/pq 的 GitHub 可以找到文档
https://godoc.org/github.com/lib/pq9. 从 lib/pq 的文档中可以看到使用这个库的办法是导入 "
github.com/lib/pq",于是在 mattermost 的 GitHub 里面搜索 "
github.com/lib/pq" 可以验证确实用的是这个库
https://github.com/mattermost/mattermost-server/blob/26684716aae02c9bd1ce4dea14f42c6f36f718c8/store/sqlstore/store.go#L810. 从 lib/pq 的文档中可以看到,可以用单引号把值包起来,而且 lib/pq 支持两个格式的 connection string
不知道能不能成功,楼主加油!