pg_trigger内にゴミが残ってしまった

いつかは調整しないとと思っていた、EUC_JPのデータベースのUTF8化を敢行する。
pg_dump -E UTF8 dbname > dmp.UTF8
dropdb dbname
createdb -E UTF8 dbname
psql dbname < dmp.UTF8
という手順(だったと思う)でUTF8化完了。
クライアントアプリの調整も一通り終わって一安心と思っていたら、あるマスタ表の更新時にエラーが起こるようになってしまった。

table "テーブル名" does not have column "?Ǹ?cd" referenced by constraint "fkey?Ǹ???ʧ"

当該のテーブルから、当該の外部参照制約と思われる制約を取り除いてもダメ。
しかも、文字化けしている外部参照名とおもわれる参照名が、pg_trigger 内に残っている。??何故??

テーブル名や列名、制約名等々に日本語を利用していたかつての不手際が、システムカタログに矛盾した行を残してしまっているみたい。UTF8化してからの運用期間もだいぶあるし、なによりクライアントアプリの調整まで元に戻すのはしんどいし、そんな後ろ向きの作業もいやだし。

自分の知っている知識の範囲で解決する方法はないだろうかと考えて次の方法で対処しました。

1 当該のテーブルをpg_dumpでデータベース外部に保存。
2 当該のテーブルを drop table で削除。
3 ダンプしたデータから当該のテーブルを再度作成。
4 pg_trigger のゴミが無くなっていることを確認。
5 マスタ表の更新が成功することを確認。

今後同様の問題が起こったらこの対処で。