質問: Windows上で稼働しているPostgreSQLのバージョンを、9.6.2にバージョンアップしようとしています。 接続にpsqlodbc(Windows x64)を使用しているため、検証環境としてServer/Client共に9.6で構築したところ、Native Errorのコードが変わっていることに気づきました。 (SQLStateは、マニュアルに記載されているとおり、変わっていません) Server/Clientの組み合わせを変えたところ、どうやらpsqlodbcが9.6だと、Serverのバージョンにかかわらず、Native Errorのコードが変わるようです。 --- (Serverは9.6.2 / 9.3.4でテスト) Clientが 09.05.0400 より前 →Native Code:7 Clientが 09.06.0100 以降(0200も同様) →Native Code:1 --- このNarive Codeの変化について、psqlodbcのリリースノートなどを確認してみたのですが、記述が見つかりませんでした。 これが仕様なのか不具合なのか、ご存じのかたはいらっしゃいませんか?
回答: PostgreSQLはもともとSQLSTATE形式以外のベンダー固有コードを返さないようなので、psqlodbcも意味のあるNative Codeを返していない、つまり「仕様として定義されていない」ということではないでしょうか。 以下は2001年のPostgreSQL MLのアーカイブからのもので、この当時はどうやらSQLSTATEすら実装されていなかったようですが、この時もpsqlodbcはエラーの内容に関わらず常に7を返していたようです。 Re: ODBC and Native error codes > > Unfortunately PostgreSQL doesn't have error code > > currently and so psqlodbc doesn't return any valid > > Native error code > > >