A5:SQL Mk-2

開発のこと、日々のこと

2.18.1 で PostgreSQL 接続エラー?

ホーム フォーラム A5:SQL Mk-2掲示板 2.18.1 で PostgreSQL 接続エラー?

  • このトピックには17件の返信、1人の参加者があり、最後に鶴田により10ヶ月、 2週前に更新されました。
15件の投稿を表示中 - 1 - 15件目 (全18件中)
  • 投稿者
    投稿
  • #20273 返信
    土山英俊
    ゲスト

    ■クライアント
    Windows10
    Microsoft Store 版 2.18.1

    ■サーバー
    RHEL8.7
    Postgresql13

    接続時にエラーとなります。

    システム エラー。コード: 87。
    パラメーターが間違っています。

    データベースの内容を登録>プロトコル・バージョンを 2.0 にすると接続できました。

    おそらく 2.18.0 では発生していなかったと思います。
    回避方法があれば教えてください。

    #20274 返信
    土山英俊
    ゲスト

    接続方法は PostgreSQL 直接接続です。
    確認は「テスト接続」で行いました。

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

    土山英俊さんこんにちは。
     
    Version 2.18.0 と Version 2.18.1 ではDB接続関連は全く修正していないので、ちょっとよくわからないですね。Version 2.18.2 を Microsoft Store に申請したので、5/15中くらいには公開されないかなと考えています。こちらでも検証していただけないでしょうか?

    #20297 返信
    土山英俊
    ゲスト

    ご連絡ありがとうございます。
    DB接続関連修正なしとのこと承知しました。自分の環境をもう一度疑ってみます。
    新しいバージョンも公開されたら検証してみます。

    #20299 返信
    土山英俊
    ゲスト

    松原様
    以下のバージョンについて試してみました。
    NG 2.18.2(x64 edition) Microsoft Store
    NG 2.18.0(x64 edition)
    NG 2.18.0(x86 edition)
    OK 2.17.4(x64 edition)
    OK 2.14.2(x64 edition)

    2.18.0 で問題なかったというのは誤りのようです。失礼しました。
    問題なかったのは、それより前のバージョンのようです。

    何か調べることがあれば教えてください。

    #20306 返信
    卜部
    ゲスト

    私の会社でも同現象が発生しておりますが、成功しているDBもあれば、失敗するDBもあるのです。
    違いがあるのでしょうかね?
    select version(); の結果

    (成功)
    PostgreSQL 9.5.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4), 64-bit

    (失敗)
    PostgreSQL 9.6.21 on amd64-portbld-freebsd11.4, compiled by FreeBSD clang version 10.0.0 (git@github.com:llvm/llvm-project.git llvmorg-10.0.0-0-gd32170dbd5b), 64-bit

    #20310 返信
    土山英俊
    ゲスト

    卜部様
    情報ありがとうございます。バージョンに依存してるのですね。
    私もいくつか調べてみました。古いものは成功する傾向のようです。
    (成功)
    PostgreSQL 8.1.23 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)
    PostgreSQL 7.4.30 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)
    (失敗)
    PostgreSQL 13.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16), 64-bit
    PostgreSQL 9.6.15 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
    PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit

    #20312 返信
    中原
    ゲスト

    vectorで公開されている2.18.2をもともと動作していた2.17.2(両方ともx64)に
    上書きした環境で動作確認(DB新規追加してテスト接続)してみましたが
    皆様の記載されたような現象は一切起こらず正常に接続できました。
    参考情報として接続を試した環境を付記しておきます。

    クライアント:windows 10 プロトコル・バージョン3.0
    接続を試した環境:
    PostgreSQL 10.22 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
    PostgreSQL 12.14 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16), 64-bit
    PostgreSQL 14.0, compiled by Visual C++ build 1914, 64-bit
    PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2), 64-bit

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

    土山英俊さん、中原さんこんにちは。
     
    Docker ベースなのですが、PostgreSQL 9~15 まで一応接続テストはしていて、問題は発生していません。

    接続できるDBとできないDBで文字コードなどが異なるなどないでしょうか?
     
    あるいは、DB接続の設定画面で、「その他」タブの「強制エンコーディング」などが指定されていたりはしないでしょうか?

    #20340 返信
    卜部
    ゲスト

    失敗する接続先のdbのpostgresql.confに指定されているロケールは
    lc_messages = ‘C’
    lc_monetary = ‘C’
    lc_numeric = ‘C’
    lc_time = ‘C’
    ですが、成功しているdbも上記設定なので、関連なさげ。

    A5:SQLの「その他」タブの「強制エンコーディング」や「文字列へのエンコード・・」のチェックを色々組み合わせて試しましたが、接続できないです。

    #20343 返信
    土山英俊
    ゲスト

    文字コードを変えてみたところ、次の通りでした。
    ■結果
    EUC_JP NG
    UTF8 OK
    ■環境
    PostgreSQL 13.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16), 64-bit
    ■コマンド
    createdb -Upostgres test_euc -EEUC_JP -l C -Ttemplate0
    createdb -Upostgres test_utf8
    psql -Upostgres -l
    データベース一覧
    名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
    ————-+———-+——————+————-+——————-+———————–
    postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
    template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    test_euc | postgres | EUC_JP | C | C |
    test_utf8 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |

    #20345 返信
    卜部
    ゲスト

    自分も試しました。
    dbのエンコーディングがEUC_JPだとpostgresのログに「メッセージ長が無効です」となり、接続できませんでした。
    dbのエンコーディングがUTF8だと接続できます

    #20349 返信
    鶴田
    ゲスト

    2.8.2 で同じエラーによって PostgreSQL に直接接続できない現象が発生しています。

    Encoding は EUC_JP、Collation は C です。
    データベースの中身、接続設定はほぼ同じで、PostgreSQL バージョンによって結果が異なります。

    PostgreSQL 8.4 ○(接続可)
    PostgreSQL 9.4 ×(システム エラー。コード: 87。パラメーターが間違っています。)
    PostgreSQL 15.1 ×(システム エラー。コード: 87。パラメーターが間違っています。)

    ダウンロード版で PostgreSQL 9.4 への接続を試してみたところ、以下のようになりました。

    a5m2_2.17.4_x64 ○(接続可)
    a5m2_2.18.0_x64 ×(システム エラー。コード: 87。パラメーターが間違っています。)

    ということで、2.18 から発生するようになったようです。

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

    土山さん、卜部さん、中原さん、鶴田さんこんにちは。
     
    調査したところ、DB接続ライブラリに不具合があり、サーバー側で文字コード変換するはずが、クライアントで文字コード変換するようになっており、EUC系の文字コードなどいくつかの文字コードで、Windows API の呼び出し時にエラーになっていました。
     
    サーバー側で文字コード変換するように修正し、Version 2.18.3 beta 2としてベータ版を出しましたのでお試しいただければと思います。

    #20385 返信
    鶴田
    ゲスト

    松原さん
    ベータ版の作成ありがとうございました。
    Version 2.18.3 beta 2(x64版)で試しましたところ、PostgreSQL 8.4/9.4/15.1 の EUC_JP データベースに接続し、テーブルデータを表示することができました。

15件の投稿を表示中 - 1 - 15件目 (全18件中)
返信先: 2.18.1 で PostgreSQL 接続エラー?
あなたの情報:




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