ホーム › フォーラム › A5:SQL Mk-2掲示板 › PostgreSQLでMONEY型の扱い
- このトピックには11件の返信、2人の参加者があり、最後にすこっとタイガーにより4年、 9ヶ月前に更新されました。
-
投稿者投稿
-
すこっとタイガーゲスト
いつもお世話になっております。
Version 2.14.4 に切替えた所、Postgresのログに以下のエラーが残るようになりました。
ERROR:cannot cast type numeric to money at character 18
STATEMENT:SELECT 1.23456789::money::text
Version 2.14.3の修正と関係はあるのでしょうか?
PostgreSQLのバージョンは9.0です。また、同じ環境になりますが、”CSV/TSVからデータをインポート”の機能を使うと、半角大文字を含む列名が、全て半角小文字になってインポートに失敗しているように見えます。
(列名がダブルクォーテーションでくくられていない?)
A5の環境設定で対処可能でしょうか?松原正和キーマスターすこっとタイガーさんこんにちは。
「SELECT 1.23456789::money::text」のステートメントですが、お気づきのようにVersion 2.14.3の修正によるものです。…がエラーになっているのでしょうか。こちらのPostgreSQLは9.2.24で開発しているのですが、該当エラーは出ていません。バージョンか通貨周りの設定に依存するのかもしれないですね。直せるか検討してみます。
インポートの機能で、半角大文字を含む列名でエラーになる件ですが、Version 2.14系の不具合のようです。修正したいと思いますので少々お待ちください。すこっとタイガーゲストこんにちは。
お忙しい所、大変恐縮ですが、よろしくお願いいたします。すこっとタイガーゲストベータ版でのご対応ありがとうございます。
早速確認した所、データベース接続時に以下のエラーログが記録されていました。
ERROR: cannot cast type numeric to money at character 27
STATEMENT: SELECT 1.23456789::numeric::money::numeric::textやはり、バージョンの違いによるものでしょうか?
松原正和キーマスターすこっとタイガーさんこんにちは。
numericからmoneyへの変換ができないのですね。ちなみに、金額型はどの通貨の設定になっているとか、通貨周りの設定などわかればお教えいただけると助かります。すこっとタイガーゲストこんにちは。
lc_monetary = ‘C’
lc_numeric = ‘C’
Cロケールの設定となっています。松原正和キーマスターすこっとタイガーさんこんにちは。
ちょっとよく分からなかったのですが、小数点付きの数値を通貨型に変換する過程でエラーになったのかもしれないですね。
Version 2.15.0 beta 28 で、「select 0::money::text」をまず試すようにしてみました。「¥0」のような文字列の通貨記号でまず判定するようにしました。
…これで解決すればよいのですが。すこっとタイガーゲストご対応ありがとうございます。
beta 28 で確認すると、以下のエラーメッセージが表示されました。
ERROR: cannot cast type integer to money at character 9
STATEMENT: SELECT 0::money::text松原正和キーマスターすこっとタイガーさんこんにちは。
0の整数を通貨型に変換するだけでエラーになるのですか…。設定によるのでしょうが、そんなことありうるのですね。ちょっと頭抱えてしまいました。何か、通貨型の変換が不可になる設定などあるのでしょうか?。すこっとタイガーさんの方で何かわかりますでしょうか?。
すこっとタイガーゲストこんにちは。
SRA-OSSのPostgreSQL 9.1 に関する技術情報を見ると、キャストの項目に、”MONEY型とNUMERIC型との型キャストに対応しました。”と書かれています。
バージョン9.0では、対応していないのかもしれません。
PostgreSQLのバージョンを上げる予定があるので、そこで確認してみます。
お手数をおかけしてしまって、申し訳ありませんでした。松原正和キーマスターすこっとタイガーさんこんにちは。
すみません、前からPostgreSQL 9.0と書かれていましたね。とりあえず、PostgreSQL 9.0の環境を用意し、動作するように修正してみます。
(Version 2.15.0 beta 30でもPostgreSQL 9.0のドキュメントにあわせて修正してみましたが、PostgreSQL 9.0でテストしていないのでうまく動作するかわかりません。)すこっとタイガーゲストこんにちは。
PostgreSQLをバージョン11に上げた所、エラーが出なくなりました。
また、以前お問い合わせした、”リストのインデックスが範囲が範囲を超えています(69)”についても不具合が解消されました。
ありがとうございした。 -
投稿者投稿