C#でPostgreSQLに接続したら「'Npgsql.PoolManager' のタイプ初期化子が例外をスローしました。」


C#でPostgreSQLに接続が必要になった。

とりあえず「NuGet」から「Npgsql」をインストール。
開発はスムーズに進む。
そしてCickOneseにて配布。
自分のPCはもちろん動作するけど・・・
さらのPCだと
「'Npgsql.PoolManager' のタイプ初期化子が例外をスローしました。」
とエラー・・。

???
ということで、
詳細調べる中でどうも

どうも
System.ValueTuple.dllがないことが原因のようで
exe配下に「System.ValueTuple.dll」をコピーすればうごくんだけど
.netフレームワーク内のdllのため
「アプリケーションファイル」に含めてくれず・・。

しばし、エラー詳細を調査したりググったり・・
結論としては
どうも「Npgsql」と「System.ValueTuple.dll」
バージョン間の問題のようで

もろもろ試行錯誤も正しい解決方法はわかず、
とりあえずは、
Npgsqlのバージョンを「4.1.3.1」から「3.2.7」まで落とすことで
解決しました。

そもそもPostgreSQLなんて触るの、10年ぶりくらい。
久々さわったけど、
項目名大文字使うとダブルクォート("")で囲まないと使えないとか
なんかいろいろくせあるのねー。
管理ツールUIも他のDBのものよりへぼいし・・
(なんで、インストールしたのにWEB画面あがってくるねん!)

DBサーバーは、会社員時代はほぼ「Oracle」
フリーになってからは、「SQLServer」「MySql」がメインで今回の「PostgreSQL」
といろいろさわったけど、「MySql」一本でいいような気がするなー。
(「SQLServer」もいいんだけど、ライセンス料がある点がマイナス。)
正直SQLなんでどれも同じようなもんだし、
管理ツールと、くせがないのが一番いいなー。
Expressのバージョンじゃ、2Gという微妙な量だし・・


0 件のコメント :

コメントを投稿