ホーム › フォーラム › A5:SQL Mk-2掲示板 › 2.18.1 で PostgreSQL 接続エラー?
- このトピックには17件の返信、1人の参加者があり、最後に鶴田により1年、 5ヶ月前に更新されました。
-
投稿者投稿
-
土山英俊ゲスト
■クライアント
Windows10
Microsoft Store 版 2.18.1■サーバー
RHEL8.7
Postgresql13接続時にエラーとなります。
—
システム エラー。コード: 87。
パラメーターが間違っています。
—データベースの内容を登録>プロトコル・バージョンを 2.0 にすると接続できました。
おそらく 2.18.0 では発生していなかったと思います。
回避方法があれば教えてください。土山英俊ゲスト接続方法は PostgreSQL 直接接続です。
確認は「テスト接続」で行いました。松原正和キーマスター土山英俊さんこんにちは。
Version 2.18.0 と Version 2.18.1 ではDB接続関連は全く修正していないので、ちょっとよくわからないですね。Version 2.18.2 を Microsoft Store に申請したので、5/15中くらいには公開されないかなと考えています。こちらでも検証していただけないでしょうか?土山英俊ゲストご連絡ありがとうございます。
DB接続関連修正なしとのこと承知しました。自分の環境をもう一度疑ってみます。
新しいバージョンも公開されたら検証してみます。土山英俊ゲスト松原様
以下のバージョンについて試してみました。
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 で問題なかったというのは誤りのようです。失礼しました。
問題なかったのは、それより前のバージョンのようです。何か調べることがあれば教えてください。
卜部ゲスト私の会社でも同現象が発生しておりますが、成功している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土山英俊ゲスト卜部様
情報ありがとうございます。バージョンに依存してるのですね。
私もいくつか調べてみました。古いものは成功する傾向のようです。
(成功)
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中原ゲスト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松原正和キーマスター土山英俊さん、中原さんこんにちは。
Docker ベースなのですが、PostgreSQL 9~15 まで一応接続テストはしていて、問題は発生していません。接続できるDBとできないDBで文字コードなどが異なるなどないでしょうか?
あるいは、DB接続の設定画面で、「その他」タブの「強制エンコーディング」などが指定されていたりはしないでしょうか?卜部ゲスト失敗する接続先のdbのpostgresql.confに指定されているロケールは
lc_messages = ‘C’
lc_monetary = ‘C’
lc_numeric = ‘C’
lc_time = ‘C’
ですが、成功しているdbも上記設定なので、関連なさげ。A5:SQLの「その他」タブの「強制エンコーディング」や「文字列へのエンコード・・」のチェックを色々組み合わせて試しましたが、接続できないです。
土山英俊ゲスト文字コードを変えてみたところ、次の通りでした。
■結果
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 |卜部ゲスト自分も試しました。
dbのエンコーディングがEUC_JPだとpostgresのログに「メッセージ長が無効です」となり、接続できませんでした。
dbのエンコーディングがUTF8だと接続できます鶴田ゲスト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 から発生するようになったようです。
松原正和キーマスター土山さん、卜部さん、中原さん、鶴田さんこんにちは。
調査したところ、DB接続ライブラリに不具合があり、サーバー側で文字コード変換するはずが、クライアントで文字コード変換するようになっており、EUC系の文字コードなどいくつかの文字コードで、Windows API の呼び出し時にエラーになっていました。
サーバー側で文字コード変換するように修正し、Version 2.18.3 beta 2としてベータ版を出しましたのでお試しいただければと思います。鶴田ゲスト松原さん
ベータ版の作成ありがとうございました。
Version 2.18.3 beta 2(x64版)で試しましたところ、PostgreSQL 8.4/9.4/15.1 の EUC_JP データベースに接続し、テーブルデータを表示することができました。 -
投稿者投稿