Npgsql:不支持时间戳的旧浮点表示
Npgsql: Old floating point representation for timestamps not supported
我编写了一个基本脚本,可以将数据从 PostgreSQL 数据库同步到另一个系统,它在我的 test/development 环境中执行没有问题,使用:
- PostgreSQL 9.4
- Npgsql dll 版本 3.0.3
一旦我们 运行 实际生产环境中的脚本,我们就会遇到以下错误:
"Old floating point representation for timestamps not supported"
研究这个问题,我发现这与 "deprecated compile-time option of PostgreSQL which switches to a floating-point representation of some date/time fields. Npgsql (currently) does not support this mode."
Here is a link to the relevant source code.
在生产中,PostgreSQL 服务器是 运行 8.3 版,由于内部原因,服务器管理员此时拒绝升级 PostgreSQL 服务器。 (当前的 Npgsql 版本不正式支持版本 9 之前的 PosgreSQL。doh!)
问题:
- 有没有办法修改PostgreSQL 8.3 "integer_datetimes"
配置设置无需完全重新安装应用程序或
升级?
- 或者,有什么方法可以将我的 Npgsql dll 降级到支持此配置设置的旧版本吗?
- 如有必要,有什么替代 Npgsql 的建议吗?我正在考虑重构代码以使用 ADO.NET(但我不确定是否会推荐这样做)。
根据此处的线程:
http://grokbase.com/t/postgresql/pgsql-general/103f2g9gsr/integer-datetime-8-2-8-4-differences
我注意到这个可能对你有帮助:
The first item listed under "Observe the following incompatibilities"
in the 8.4 release notes is
Use 64-bit integer datetimes by default (Neil Conway)
Previously this was selected by configure's
--enable-integer-datetimes option. To retain the old behavior, build with --disable-integer-datetimes.
也许这有助于弄清楚如何 disable/enable 整数日期时间。
你使用的是什么版本的 Postgre-SQL?
我对此不是百分百确定,但 Npgsql 2.2.7 应该能够与 PostgreSQL 遗留浮点格式一起正常工作,因为它使用文本传输来读取和写入值而不是二进制值。这应该允许您与旧数据库进行交互。
但是,强烈建议不要以任何方式继续使用 PostgreSQL 8.3 - 8.3 已于 2013 年 2 月终止使用...您绝对应该尝试迁移到 9.4,只需将数据转储并将其恢复到新环境,可能效果不错
另请注意,虽然新版本(如 3.0.4)通常可以在 9.0 之前的 PostgreSQL 上运行 - 只是它们没有以任何方式进行测试,我们可能不会修复任何重要的错误你可以 运行 穿过。
Npgsql, ASP.NET Core 2.2:System.NotSupportedException: The deprecated
floating-point date/time format is not supported by Npgsql.
大家好!我使用 asp.net 核心 2.2 遇到了这个问题。在我的例子中,我降级到 Npgsql 版本 4.0.7,这解决了我的问题。
我编写了一个基本脚本,可以将数据从 PostgreSQL 数据库同步到另一个系统,它在我的 test/development 环境中执行没有问题,使用:
- PostgreSQL 9.4
- Npgsql dll 版本 3.0.3
一旦我们 运行 实际生产环境中的脚本,我们就会遇到以下错误:
"Old floating point representation for timestamps not supported"
研究这个问题,我发现这与 "deprecated compile-time option of PostgreSQL which switches to a floating-point representation of some date/time fields. Npgsql (currently) does not support this mode."
Here is a link to the relevant source code.
在生产中,PostgreSQL 服务器是 运行 8.3 版,由于内部原因,服务器管理员此时拒绝升级 PostgreSQL 服务器。 (当前的 Npgsql 版本不正式支持版本 9 之前的 PosgreSQL。doh!)
问题:
- 有没有办法修改PostgreSQL 8.3 "integer_datetimes" 配置设置无需完全重新安装应用程序或 升级?
- 或者,有什么方法可以将我的 Npgsql dll 降级到支持此配置设置的旧版本吗?
- 如有必要,有什么替代 Npgsql 的建议吗?我正在考虑重构代码以使用 ADO.NET(但我不确定是否会推荐这样做)。
根据此处的线程:
http://grokbase.com/t/postgresql/pgsql-general/103f2g9gsr/integer-datetime-8-2-8-4-differences
我注意到这个可能对你有帮助:
The first item listed under "Observe the following incompatibilities" in the 8.4 release notes is
Use 64-bit integer datetimes by default (Neil Conway)
Previously this was selected by configure's --enable-integer-datetimes option. To retain the old behavior, build with --disable-integer-datetimes.
也许这有助于弄清楚如何 disable/enable 整数日期时间。
你使用的是什么版本的 Postgre-SQL?
我对此不是百分百确定,但 Npgsql 2.2.7 应该能够与 PostgreSQL 遗留浮点格式一起正常工作,因为它使用文本传输来读取和写入值而不是二进制值。这应该允许您与旧数据库进行交互。
但是,强烈建议不要以任何方式继续使用 PostgreSQL 8.3 - 8.3 已于 2013 年 2 月终止使用...您绝对应该尝试迁移到 9.4,只需将数据转储并将其恢复到新环境,可能效果不错
另请注意,虽然新版本(如 3.0.4)通常可以在 9.0 之前的 PostgreSQL 上运行 - 只是它们没有以任何方式进行测试,我们可能不会修复任何重要的错误你可以 运行 穿过。
Npgsql, ASP.NET Core 2.2:System.NotSupportedException: The deprecated floating-point date/time format is not supported by Npgsql.
大家好!我使用 asp.net 核心 2.2 遇到了这个问题。在我的例子中,我降级到 Npgsql 版本 4.0.7,这解决了我的问题。