A5:SQL Mk-2

開発のこと、日々のこと

PostgreSQLでMONEY型の扱い

ホーム フォーラム A5:SQL Mk-2掲示板 PostgreSQLでMONEY型の扱い

  • このトピックには11件の返信、2人の参加者があり、最後にすこっとタイガーにより4年、 9ヶ月前に更新されました。
12件の投稿を表示中 - 1 - 12件目 (全12件中)
  • 投稿者
    投稿
  • #5945 返信
    すこっとタイガー
    ゲスト

    いつもお世話になっております。

    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の環境設定で対処可能でしょうか?

    #5957 返信
    松原正和
    キーマスター

    すこっとタイガーさんこんにちは。
     
    「SELECT 1.23456789::money::text」のステートメントですが、お気づきのようにVersion 2.14.3の修正によるものです。…がエラーになっているのでしょうか。こちらのPostgreSQLは9.2.24で開発しているのですが、該当エラーは出ていません。バージョンか通貨周りの設定に依存するのかもしれないですね。直せるか検討してみます。
     
    インポートの機能で、半角大文字を含む列名でエラーになる件ですが、Version 2.14系の不具合のようです。修正したいと思いますので少々お待ちください。

    #5974 返信
    すこっとタイガー
    ゲスト

    こんにちは。
    お忙しい所、大変恐縮ですが、よろしくお願いいたします。

    #6093 返信
    すこっとタイガー
    ゲスト

    ベータ版でのご対応ありがとうございます。
    早速確認した所、データベース接続時に以下のエラーログが記録されていました。
    ERROR: cannot cast type numeric to money at character 27
    STATEMENT: SELECT 1.23456789::numeric::money::numeric::text

    やはり、バージョンの違いによるものでしょうか?

    #6133 返信
    松原正和
    キーマスター

    すこっとタイガーさんこんにちは。
     
    numericからmoneyへの変換ができないのですね。ちなみに、金額型はどの通貨の設定になっているとか、通貨周りの設定などわかればお教えいただけると助かります。

    #6175 返信
    すこっとタイガー
    ゲスト

    こんにちは。
    lc_monetary = ‘C’
    lc_numeric = ‘C’
    Cロケールの設定となっています。

    #6199 返信
    松原正和
    キーマスター

    すこっとタイガーさんこんにちは。
     
    ちょっとよく分からなかったのですが、小数点付きの数値を通貨型に変換する過程でエラーになったのかもしれないですね。
     
    Version 2.15.0 beta 28 で、「select 0::money::text」をまず試すようにしてみました。「¥0」のような文字列の通貨記号でまず判定するようにしました。
     
    …これで解決すればよいのですが。

    #6204 返信
    すこっとタイガー
    ゲスト

    ご対応ありがとうございます。

    beta 28 で確認すると、以下のエラーメッセージが表示されました。
    ERROR: cannot cast type integer to money at character 9
    STATEMENT: SELECT 0::money::text

    #6225 返信
    松原正和
    キーマスター

    すこっとタイガーさんこんにちは。
     
    0の整数を通貨型に変換するだけでエラーになるのですか…。設定によるのでしょうが、そんなことありうるのですね。

    ちょっと頭抱えてしまいました。何か、通貨型の変換が不可になる設定などあるのでしょうか?。すこっとタイガーさんの方で何かわかりますでしょうか?。

    #6233 返信
    すこっとタイガー
    ゲスト

    こんにちは。

    SRA-OSSのPostgreSQL 9.1 に関する技術情報を見ると、キャストの項目に、”MONEY型とNUMERIC型との型キャストに対応しました。”と書かれています。
    バージョン9.0では、対応していないのかもしれません。
    PostgreSQLのバージョンを上げる予定があるので、そこで確認してみます。
    お手数をおかけしてしまって、申し訳ありませんでした。

    #6261 返信
    松原正和
    キーマスター

    すこっとタイガーさんこんにちは。
     
    すみません、前からPostgreSQL 9.0と書かれていましたね。とりあえず、PostgreSQL 9.0の環境を用意し、動作するように修正してみます。
    (Version 2.15.0 beta 30でもPostgreSQL 9.0のドキュメントにあわせて修正してみましたが、PostgreSQL 9.0でテストしていないのでうまく動作するかわかりません。)

    #6424 返信
    すこっとタイガー
    ゲスト

    こんにちは。
    PostgreSQLをバージョン11に上げた所、エラーが出なくなりました。
    また、以前お問い合わせした、”リストのインデックスが範囲が範囲を超えています(69)”についても不具合が解消されました。
    ありがとうございした。

12件の投稿を表示中 - 1 - 12件目 (全12件中)
返信先: PostgreSQLでMONEY型の扱い
あなたの情報:




コメントは受け付けていません。