PostgreSQL『ERROR: cannot change name of input parameter in FUNCTION』の原因と対処
- 2025.09.22
CREATE OR REPLACE FUNCTIONで既存関数の「入力(IN)パラメータ名」を変更しようとすると、このエラーが出る。呼び出し側の名前付き引数(named notation)互換性を壊すのを防ぐため、PostgreSQLはIN引数名の置き換えを禁止している。最短復旧、恒久対策、互換維持 […]
CREATE OR REPLACE FUNCTIONで既存関数の「入力(IN)パラメータ名」を変更しようとすると、このエラーが出る。呼び出し側の名前付き引数(named notation)互換性を壊すのを防ぐため、PostgreSQLはIN引数名の置き換えを禁止している。最短復旧、恒久対策、互換維持 […]
親テーブルの行をUPDATE/DELETEしたとき、子テーブルの外部キー(FK)が参照整合性を守れないと発生する。代表メッセージの読み方、発生条件、最短復旧、堅牢な削除/再割当て手順、CASCADE/SET NULL/SET DEFAULT/RESTRICTの使い分け、DEFERRABLEやインデッ […]
クライアントがサーバと通信中に、PostgreSQLバックエンドが応答せずに終了したときに出る代表的な接続断エラー。サーバの異常終了・再起動、管理者/ツールによる強制切断、ネットワークやロードバランサのアイドルタイムアウト、拡張モジュールの不具合、メモリ逼迫(OSのOOM Killer)などが主因に […]
概要。型に合わない文字列やフォーマットを列やキャストに渡すと、PostgreSQL は「invalid input syntax for type 」(SQLSTATE 22P02) を返す。代表的な発生箇所(INSERT/UPDATE/COPY/CAST/関数引数)と型別の落とし穴、ETLでの切り […]
このエラーは、データディレクトリ($PGDATA)直下にあるロックファイル「postmaster.pid」をPostgreSQLが検出し、「既に同じデータディレクトリでサーバが動いている」または「異常終了でロックが残っている」と判断したときに発生する。まずは本当に稼働中かを確認し、稼働中なら停止して […]
概要。集計クエリで「集約していない列」をSELECT/HAVING/ORDER BYに出そうとすると、PostgreSQLは「その列はGROUP BYに現れなければならない」と拒否する。発生条件、最短再現、正しい書き換え方(GROUP BYへ追加 / 集約関数に包む / 代表行の選定)、JOIN時の […]
全文検索の tsquery 構文が不正なときに出るエラー。未対応の記号を含む文字列を to_tsquery に渡す、演算子の並び/括弧が不正、引用符の使い方違い、ストップワード除去で式が崩れる、プレフィックス指定 :* の誤用、ダブルクオートの取り違えなどが主因。安全なクエリ生成は「ユーザー入力→p […]
他テーブルの外部キー(FOREIGN KEY)が参照している表をDROPしようとすると、依存関係の保全のために拒否される。正しい手順は「依存の見える化 → 参照元のテーブル/制約を先に処理 → 必要ならCASCADEで一括」と段階的に進める。再現用コード、依存の洗い出しSQL、DROP順序の自動生成 […]
SELECT … FOR UPDATE/NO KEY UPDATE/SHARE/KEY SHARE で行ロックを取得しようとした際、トランザクション状態や接続先、クエリ形状の制約により実行できないときに発生する。代表メッセージ別に切り分け、最短復旧手順、正しいクエリ形、代替手段(UPDATE … R […]
演算子(=、<、>、||、LIKE、ILIKE、@>、<@、~ など)に対して与えたオペランドの型の組み合わせに対応する定義が見つからないと発生する。メッセージには「operator does not exist: 左型 演算子 右型」と具体的な型が出る。型不一致・暗黙キャス […]