web-dev-qa-db-ja.com

エラー:タイプmoneyの入力構文が無効です

インポート中に次のエラーが発生します。

pg_restore: [archiver (db)] COPY failed for table "transaction_details":
ERROR:  invalid input syntax for type money: "$0.00"

restore完了しましたが、transaction_detailsテーブルが空です。これはHerokuのPostgreSQL Dumpデータベースです。

HerokuのPostgreSQLバージョンは9.3.15で、私のシステムでも同じです。

私が使用したコマンド:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U root -d database 577b86e3-8d96-4410-9b36-dd0f78cfe32f

誰かが解決策を提案できますか?

3
Akash Kumar

moneyタイプに関するマニュアルには、ケースに関する正確なアドバイスがあります:

このデータ型の出力はロケールに依存するため、moneyデータをlc_monetaryの設定が異なるデータベースにロードしても機能しない場合があります。問題を回避するには、ダンプを新しいデータベースに復元する前に、lc_monetaryが、ダンプされたデータベースと同じか同等の値であることを確認してください。

チェックする:

SHOW lc_monetary;

lc_monetaryのマニュアル

エラーメッセージの例の値('$0.00')は、(特に)デフォルト設定で機能します。

lc_monetary = 'C';

postgresql.confで設定し、リロードしてもう一度お試しください...

この特異な動作は、money型が人気がない理由の1つです。

7