使用CKAN通过SQLAlchemy连接Azure PostgreSQL时遇用户名格式错误求助
解决Azure PostgreSQL连接CKAN时的用户名验证错误
刚碰到这个问题的时候我也懵了——明明用户名密码都对,怎么就提示Invalid Username了?其实这是Azure PostgreSQL的特殊要求在搞鬼,咱们一步步搞定它:
问题根源
Azure PostgreSQL的身份验证机制和常规PostgreSQL不一样,它要求用户名必须采用 <username@hostname> 的格式,而不是咱们习惯的单独用户名(比如scott)。这也就是你收到FATAL: Invalid Username specified. Please check the Username and retry connection.错误的原因。
修正后的连接字符串
把你原来的连接字符串里的用户名部分替换成完整的<username@hostname>格式就行。比如原来的:
engine = create_engine('postgresql://scott:tiger@myhost.postgres.database.azure.com:5432/mydatabase')
要改成:
engine = create_engine('postgresql://scott@myhost.postgres.database.azure.com:tiger@myhost.postgres.database.azure.com:5432/mydatabase')
这里要注意:用户名部分是scott@myhost.postgres.database.azure.com,密码还是tiger,主机、端口和数据库名称保持不变。
为什么要这么做?
Azure PostgreSQL用这种用户名格式来明确绑定到对应的服务器实例,避免在多环境下出现身份验证混淆的情况,算是它特有的身份验证规则。
只要按照这个格式调整连接字符串,再重新初始化SQLAlchemy引擎,就能顺利连接上Azure PostgreSQL给CKAN用了。
内容的提问来源于stack exchange,提问作者terchris
相关产品推荐
相关产品推荐

