理由もなく失敗し始めたストアド プロシージャがあります。あるはずなのに見つからない!
これは、私が以前に何度も行ったプロセスであり、問題はありません。
ソース サーバーは正常に動作します。
ソース サーバーでデータベースの pg_dump を実行し、それを別のサーバーにインポートしました。これで問題ありません。すべてのデータを表示し、更新を行うことができます。
次に、インポートされたデータベースでストアド プロシージャを実行します。このストアド プロシージャは、2 つの同一のスキーマを持つデータベースで次の処理を行います。
For each table in schema1
Truncate table in schema2
INSERT INTO schema2."table" SELECT * FROM schema1."table" WHERE "Status" in ('A','N');
Next
ただし、以前はエラーが発生しなかったのに、これによりエラーが発生します-エラーは
***エラー** *
エラー: 列 "HBA" はブール型ですが、式は整数型です SQL 状態: 42804 ヒント: 式を書き直すかキャストする必要があります。
これが得られる理由 - 前回この手順に従ったときと今回の唯一の違いは、問題のテーブルに余分な列が追加されたため、「HBA」ブール列が最後のフィールドではないことです。しかし、なぜ元のデータベースで機能するのでしょうか!
すべてのデータを削除し、テーブルを削除して再構築しようとしましたが、これらはすべて失敗しました。ただし、列をドロップして追加すると、機能する場合-最後のフィールドである必要があることを意味するブールフィールドについて何かがあります!
どんな助けでも大歓迎です。
Postgres 9.1 の使用