Supabase を使って PostgreSQL データベースに接続しようとした際に、次のようなエラーに遭遇することがあります:
P1001: Can't reach database server at `aws-0-ap-northeast-1.pooler.supabase.com:6543`
このエラーは、接続 URL の設定ミスが原因であることが多いです。私の場合、接続 URL 内のパスワード設定が原因でこのエラーが発生しました。以下で、このエラーの原因と解決方法について解説します。
エラーの原因とパスワード設定ミス
まず、自分が最初に設定していた(誤った)接続 URL は以下のようなものでした。
postgresql://postgres.efwkrqqalkbvtezrygfl:[mypasswordstring]@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres
この例では、[mypasswordstring]
のように角括弧 []
でパスワードを囲んでいました。このような記述は PostgreSQL の接続 URL ではエラーの原因となります。角括弧はプレースホルダーとして使用されるものであり、実際の設定では使用しません。
正しい URL の記述例
正しい記述方法は以下のとおりです。パスワード部分に角括弧をつけず、そのまま書き込む必要があります。
postgresql://postgres.efwkrqqalkbvtezrygfl:mypasswordstring@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres
このように、mypasswordstring
をそのまま入力することで、エラーを回避し、データベースに正常に接続することができます。
「P1001: Can't reach database server」エラーが出るその他の原因
もしパスワード設定を修正してもエラーが解消しない場合、次の点も確認してください:
-
データベースの稼働状態:Supabase のダッシュボードでデータベースが稼働中であることを確認してください。停止中の場合、接続できません。
-
ネットワークの問題:インターネット接続が不安定な場合にも、データベースサーバーに接続できないことがあります。安定したネットワークを確保してください。
-
ホワイトリスト設定:Supabase では、データベースへのアクセスを特定の IP アドレスからのみ許可する設定ができる場合があります。必要に応じて、接続元の IP アドレスをホワイトリストに追加してください。
まとめ
Supabase の PostgreSQL に接続する際に、接続 URL のパスワードには角括弧 []
をつけずにそのまま入力する必要があります。また、「P1001: Can't reach database server」エラーが出た際には、以下の点を確認しましょう。
- URL の形式が正しいか(特にパスワード部分)
- データベースが稼働しているか
- ネットワークが安定しているか
- ホワイトリスト設定が正しいか
これらの点を確認し、修正することで Supabase データベースへの接続が正常に行えるようになります。同様のエラーが出た場合にはぜひ試してみてください。