はじめに
HonoとDrizzle ORMを使ってPostgreSQLに接続するアプリを開発していたところ、データベースへの接続時に認証エラーが発生しました。
問題
Todoリストを取得するAPIを実行したところ、以下のようなエラーが発生しました。
DrizzleQueryError: Failed query
PostgresError: password authentication failed for user "username"
code: '28P01'
解決方法
src/db/client.ts
+ import "dotenv/config";
import postgres from "postgres";
import { drizzle } from "drizzle-orm/postgres-js";
import * as schema from "./schema.js";
export const client = postgres(process.env.DATABASE_URL!);
export const db = drizzle({ client, schema });
アプリが.envファイルを読み込めていませんでした。
おわりに
今回のエラーでは、認証エラーの内容からPostgreSQLのユーザー設定が間違っていると考えてしまいました。
しかし実際には、PostgreSQLの設定ではなく、アプリ側が環境変数を読み込めていなかったことが原因でした。
もし今後同様のエラーに遭遇した場合は、まず以下を確認しようと思います。
-
.envが存在するか -
process.env.DATABASE_URLが取得できるか -
dotenv/configを読み込んでいるか - サーバーを再起動したか