ホーム › フォーラム › A5:SQL Mk-2掲示板 › PostgreSQLでMONEY型の扱い
- このトピックには11件の返信、2人の参加者があり、最後に
すこっとタイガーにより5年、 2ヶ月前に更新されました。
-
投稿者投稿
-
すこっとタイガー
ゲストいつもお世話になっております。
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)”についても不具合が解消されました。
ありがとうございした。 -
投稿者投稿