我已經寫了從PostgreSQL數據庫到另一個系統,其執行沒有問題,我的測試/開發環境,使用同步數據提供了基本的腳本:Npgsql的:不支持時間戳舊的浮點表示
- PostgreSQL的9.4
- DLL Npgsql的版本3.0.3
一旦我們跑在現場生產環境的腳本,我們打以下錯誤:
"Old floating point representation for timestamps not supported"
研究這個問題,我發現這與「PostgreSQL的不推薦使用的編譯時選項有關,該選項切換到某些日期/時間字段的浮點表示。 Npgsql的(目前)不支持這種模式。」
Here is a link to the relevant source code。
在生產中,PostgreSQL服務器正在運行8.3版本,而對於內部原因,服務器管理器已下降到PostgreSQL服務器在這個時候升級(Npgsql的當前版本不正式支持PosgreSQL之前的版本9 DOH!)
問題(S):
- 有什麼辦法修改的PostgreSQL 8.3 「integer_datetimes」 的conf沒有完全重新安裝應用程序或 升級?
- 或者,有沒有辦法將我的Npgsql dll降級到支持此配置設置的舊版本?
- 如有必要,還有其他Npgsql替代方法的建議嗎?我正在考慮重構代碼以使用ADO.NET(但我不確定是否會推薦)。
降級到Npgsql 2.2.7解決了我遇到的錯誤「不支持時間戳的舊浮點表示」錯誤。感謝您的幫助!我完全同意使用PosgreSQL 8.3並不理想,但在這種情況下,我不幸沒有任何控制權決定是否升級,並且必須爲PostgreSQL 8.3數據庫找到一個可行的解決方案。好的一面是,我已經有了一個使用最新Npgsql版本的項目的副本,可以在數據庫升級時進行升級。再次感謝你! –
我有一個PostgreSQL 9.3實例,我不控制'integer_datetimes'禁用。 Npgsql 2.2.7適用於時間戳,但是一些數組拋出時,我認爲應該使用值類型數組中的空值。升級到3.2.5固定了陣列,但現在時間戳丟失了。爲什麼刪除了時間戳記支持(看起來可能提交'1f140e5')? – ryachza
時間戳支持未被刪除 - Npgsql 3.0從讀/寫值的文本表示切換到二進制,即不是解析人類可讀的時間戳表示,而是讀取一個簡單的二進制值(更高效,更易於維護等)。 )。不幸的是,在非常舊的PostgreSQL版本中,Npgsql不支持默認的二進制表示形式,儘管您仍然可以像上面解釋的那樣重新編譯新的表示形式。 –