全く訳がわからない。先日から悩んでいるレコードロック。
現象をまとめてみると、
1.WindowsXP+Office2007 32bit環境ではロックがかからない。
2.windows10+Office2016 64bit環境ではでロックする。
3.odbcドライバー経由でロックする。pgAdminでは更新可能な場合もあれば、更新できないこともある。pgAdminで更新できない場合は、日本語文字列の部分が原因になっているようだ。
4.別のサーバーにまっさらの状態でインストールしたPostgreSQLにリストアした場合でも、同じレコードで同じ現象が起こる。
誰もつないでいないサーバーなので、ロックはありえない。また、販売管理プログラム自身で連結フォームにしていたところは、Access内のテーブルに連結するように改めたので、サーバーに重複してリンクしてしまっているということもない。
5.Updateの場合に限る。Insert時にはエラーにならない。
32bit環境からデータ更新した時はエラーにならないので、64bitWindows固有の問題のようだ。いつもとは限らないのだが、pgAdminからも更新できない場合もあるので、必ずしもodbcドライバーの問題とも言えない。
Windows10もUnicodeだし、PostgreSQLもUTF8 にしているので、文字変換エラー、読み間違えとも思えない。実際文字化けは全くない。32bit環境では読み間違えない 文字列を64bit環境では読み違えるケースがあるのだろうか?
読み違えるというか、文字列の一部が予約語と判断しているようなのだが、、、
とりあえずUpdateはあきらめて、一度Deleteしてから改めてInsertするように変更してみようと思う。
----------------------------------------------------------------------
2017/2/28 14:00
recordsetを開いてdeleteしたしてみたが、ロックしてdeleteできなかった。
パススルークエリからdeleteするとOK!
その後、recordset を addnew
なんてこったい、、、
2017/3/1 18:00
パススルークエリならupdate(更新登録)できる!
現象をまとめてみると、
1.WindowsXP+Office2007 32bit環境ではロックがかからない。
2.windows10+Office2016 64bit環境ではでロックする。
3.odbcドライバー経由でロックする。pgAdminでは更新可能な場合もあれば、更新できないこともある。pgAdminで更新できない場合は、日本語文字列の部分が原因になっているようだ。
4.別のサーバーにまっさらの状態でインストールしたPostgreSQLにリストアした場合でも、同じレコードで同じ現象が起こる。
誰もつないでいないサーバーなので、ロックはありえない。また、販売管理プログラム自身で連結フォームにしていたところは、Access内のテーブルに連結するように改めたので、サーバーに重複してリンクしてしまっているということもない。
5.Updateの場合に限る。Insert時にはエラーにならない。
32bit環境からデータ更新した時はエラーにならないので、64bitWindows固有の問題のようだ。いつもとは限らないのだが、pgAdminからも更新できない場合もあるので、必ずしもodbcドライバーの問題とも言えない。
Windows10もUnicodeだし、PostgreSQLもUTF8 にしているので、文字変換エラー、読み間違えとも思えない。実際文字化けは全くない。32bit環境では読み間違えない 文字列を64bit環境では読み違えるケースがあるのだろうか?
読み違えるというか、文字列の一部が予約語と判断しているようなのだが、、、
とりあえずUpdateはあきらめて、一度Deleteしてから改めてInsertするように変更してみようと思う。
----------------------------------------------------------------------
2017/2/28 14:00
recordsetを開いてdeleteしたしてみたが、ロックしてdeleteできなかった。
パススルークエリからdeleteするとOK!
その後、recordset を addnew
なんてこったい、、、
2017/3/1 18:00
パススルークエリならupdate(更新登録)できる!