我的工作场所有一个由邮政服务提供给我们的.net应用程序,它连接到在同一台机器上运行的oracle数据库,并负责注册、存储和打印发货标签。
由于数据库主机等是可配置的,我们询问公司是否可以在网络上使用该应用程序(简单地将其复制到另一台机器上会导致“文字与格式字符串不匹配”错误),我们得到的所有信息是“这是不可能的”。我不想被拒绝,我用反射器在exe文件中戳了一下。
连同Oracle的v$sqlarea视图,我将错误定位到几个日期比较函数,但我不知道为什么应用程序一开始就可以在原始计算机上运行。
原始应用程序使用的查询类似于
SELECT * FROM shipping WHERE date = '2011/03/28' --error
很容易用下面这样的东西修复
SELECT * FROM shipping WHERE to_char(date, 'yyyy/mm/dd') = '2011/03/28'
为什么原始应用程序可以正常工作而不会抛出任何错误?当应用程序在原始主机上使用时,v$sqlarea视图中会弹出不正确的查询,如果我复制查询并使用其他任何东西手动运行它会抛出错误,如果我在任何其他计算机上运行应用程序,它也会抛出错误,Oracle中是否有某些设置正在动态修改查询,但仅针对源自本地计算机的查询,而将原始查询存储在v$sqlarea中?
发布于 2011-03-28 17:04:00
这可能是由于服务器上的区域设置造成的。请检查新服务器是否配置为使用相同的语言环境(EN-GB、EN-US或原始服务器配置为使用的任何语言环境)。
https://stackoverflow.com/questions/5456118
复制相似问题