🐛

Hasuraで「Inconsistent object: Invalid hostname」が出たときの解決方法

2022/09/04に公開

発生した問題

Hasura GraphQL EngineのDATA > Edit Data Source > Environment Variableから環境変数を指定してDBに接続しようとしたら、次のようなエラーが発生しました。

Inconsistent object: Invalid hostname:

[
    {
        “definition”: “Database Display Name”,
        “name”: “source Database Display Name”,
        “reason”: “Inconsistent object: Invalid hostname: postgresql://postgres:xxxxxx@xxx.xxx.xxx.xxx:xxxx/postgres”,
        “type”: “source”
    }
]

問題に対する考察

Invalid hostnameとあるので、ホスト名が間違っているのでしょうか。
しかし、Connection Parametersからパラメータを指定したら接続できたので、Database URLの書式・パラメータは正しそうに見えます。

原因

Database URLで指定していたパスワードに@などのURLに使用できないASCII文字が含まれているためでした。

解決方法

@などのURLに使用できないASCII文字をURLエンコードした文字列に変換することで正常に接続することができました。

URLエンコード対応表
https://www.eso.org/~ndelmott/url_encode.html

同じような問題に関するIssueがHasuraのリポジトリにありました。
https://github.com/hasura/graphql-engine/issues/7121

GitHubで編集を提案

Discussion