2008年8月4日月曜日

PostgreSQL と Accessの問題

AccessからODBCドライバー経由でPostgreSQLを利用しているわけですが、あるテーブルを作ってから、Accessからレコードが削除できないという問題が発生。


「他のユーザーが同じデータに対して同時に変更を試みているので、プロセスが停止しました。」

となるのです。排他制御の関係かなと思いましたが、自分一人しかこのテーブルを使っていないからおかしいなと思い、いろいろとテーブルを作り直したり実験。

その結果、あるフィールドに timestamp 型があると このエラーが発生することまでは分かった。

その後、ググったところ


http://akionweb.com/archives/2007/07/postgresql_8ms.shtml

上記のページを発見!!!


原因はタイムスタンプ型のミリセカンドの部分をAccessがサポートしていないことによる問題なので、これを扱えるデータ型に変更することで解決。

timestamp をtimestamp(0) に変更すれば良いみたい!

ALTER TABLE target_table ALTER target_column TYPE timestamp(0);


すべてtimestamp型を使っているテーブルに適用すればよい。



なかなか問題解決は一筋縄には行きませんね。

0 件のコメント: