我的database.yml文件是这样的:
base: &base
adapter: postgres
encoding: UTF-8
host: hostHidden
username: postgres
password: passw%#rd
schema_search_path: public
port: hiddenPort
production: &production
database: myDb
<<: *base
我正在使用DataMapper来提供服务。在postgres 9.5.9上运行。我也可以使用psql并使用相同的用户/通道组合在我的数据库上执行所有事务(可以手动连接到db)。
当我的服务尝试连接到我的数据库时,我收到如下错误:
DataObjects::SQLError: Can't connect: postgresql://postgres:passw%25%23rd@hostHidden:hiddenPort/myDb?database=myDb&adapter=postgres&encoding=UTF-8&host=hiddenHost&username=postgres&password=passw%2525%2523rd&schema_search_path=public&port=hiddenPort
FATAL: password authentication failed for user "postgres" (code: , sql state: , query: , uri: )
特殊字符已编码,因此身份验证失败。
更新: 做了一些调查,发现密码是网址编码,工作完美。 尝试使用以下方法手动连接到DB:
psql 'postgresql://postgres:passw%25%23rd@hostHidden:hiddenPort/myDb'
并且工作得很好。但无法弄清楚为什么服务无法正确连接。
任何帮助将不胜感激。