如果在安装32位Oracle客户端组件的情况下64位模式运行, 将出现此问题.

场景重现

  • 在一台Windows 10 64-bit电脑上
  • 安装了Oracle 11gR2 32-bit客户端
  • 服务器安装oracle 11gR2 64位服务端
  • 用 VS2019 写的一个基于数据库驱动的项目(MVC,webform)
  • 远程操作Oracle数据库都挺正常的
  • 后来发布到服务器IIS MVC项目正常,webform连不上数据库(它们数据库连接语句一样),在本机IIS又多正常(后面才知道是因为我本机安装了32位客户端)
  • 访问Oracle数据库出现如下异常:
  •  

     

    异常原因

    • 几经折腾之下(夜深人静的时候跟度娘交流好多次)
    • 发现是项目中连接Oracle用的是 System.Data.OracleClient这个VS2010自带的数据库驱动是32-bit
    • 而项目中用该驱动操作数据库的时候最终还是必须通过本机的 Oracle 客户端去操作.
    • 而原先本机的Oracle客户端32-bit, 操作数据库自然正常
    • 而现在本机的Oracle客户端64-bit, 操作数据库自然异常

    解决方案(几种)

    1. 去搞一个64-bitSystem.Data.OracleClient驱动(不建议这么做, VS都说该驱动早过时了, 叫你不要用了)
    2. 再装一个Oracle 11gR2 32-bit的客户端(我反正是这么干的) 在服务器安装32位客户端(还是不行,重启一下就可以了
posted @ 2022-02-16 11:10  我是牙牙  阅读(1835)  评论(0编辑  收藏  举报