我目前正在开始将应用程序的postgres 8.4 db升级到9.4的过程。实际的数据库迁移已经完美无缺,但有些应用程序查询在针对9.4数据库运行时不会返回奇怪的结果。我为C#使用NpgSql v2.0.12.0库。这个问题似乎与存储以base64字符串编码的文本数据的几个表相关。查询调用postgres解码函数,以便将编码数据作为纯文本返回。例如:NpgSql - 从具有解码功能的查询返回的错误数据
SELECT
decode(user_name, 'base64')::text as user_name
FROM
login
WHERE
login_id = 123;
提交到8.4 DB时,字符串被正确地返回到应用程序。当提交到9.4 DB我得到
\x61646d696e6973747261746f72
在pgAdmin的SQL工具的结果是在这两种情况下是正确的。我确信这可能是某种编码问题,但对于我来说我无法弄清楚 - 我已经搜索了好几个小时,通过postgres文档挖掘并在这里无休止地搜索,最终未能找到解决我的问题。希望有一些PostGres的人可以指出我正确的方向来解决这个问题。
什么是“正确”?显示你认为它*应该*也是。猜测你遇到了默认的'bytea_output'设置更改的问题。 –
在这种情况下,正确的响应应该是“管理员”。 – kdavej
Npgsql 2.0.12绝对是古老的...你绝对应该尝试升级到最新的3.x –