Postgresql

錯誤:金錢類型的輸入語法無效

  • December 30, 2016

導入時出現此錯誤:

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

有人可以提出解決方案嗎?

關於類型的手冊money對您的情況有確切的建議:

money由於此數據類型的輸出對語言環境敏感,因此將數據載入到具有不同設置的數據庫中可能不起作用lc_monetary。為避免出現問題,在將轉儲還原到新數據庫之前,請確保lc_monetary其具有與轉儲數據庫中相同或等效的值。

去檢查:

SHOW lc_monetary;

上的手冊lc_monetary

錯誤消息 ( ) 中的範例值'$0.00'適用於預設設置(除其他外):

lc_monetary = 'C';

您可以設置它postgresql.conf,重新載入並重試…

money這種特殊的行為是該類型不受歡迎的原因之一。

引用自:https://dba.stackexchange.com/questions/159536