状況
公式の手順を参考にSupabaseとHasuraを接続させようとしていたところ、次の様なエラーが出た。
[
{
"definition": "...",
"message": "connection to server at ... , port 5432 failed: Network is unreachable\n\tIs the server running on that host and accepting TCP/IP connections?\n",
"name": "source ...",
"reason": "Inconsistent object: connection error",
"type": "source"
}
]
※一部マスクしています
原因
- SupabaseのデフォルトDBはIPv6アドレスでのみ接続を受け付けるようになっている
- 一方、HasuraはIPv4しか使えず、IPv6ではネットワークに到達できない
- そのため、「Network is unreachable」や「Is the server running on that host and accepting TCP/IP connections?」というエラーが発生する
解決策
Supabaseの「Session Pooler」機能で、IPv4互換の接続URLを使用する
- Supabaseダッシュボードの「Database」→「Settings」→「Session Pooler」から「IPv4互換のURL」を取得
- そのURLをDATABASE_URLに設定する
その他参考