作者归档:waiting_admin

关于C# OracleClient连接OracleOCIEnvCreate failed with return code -1的问题解决方案

最近在很多新的客户电脑中使用我们的程序时报了一个错误:

英文:

OCIEnvCreate failed with return code -1 but error message text was not available.

中文:

OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

 

为了部署方便,我们使用了精简版的Oracle客户端,自己配或者网上找的安装包。

经过国内外的搜索,基本上此问题都定位为权限问题。确实,权限可能是问题之一,但是不完全是权限问题,没办法找到其他的原因了。后来想改用ODP.Net,在研究过程中发现了这一篇博客,有一句话:

当然,光有OCI目录(在环境变量Path中设置)不行,还得设置环境变量ORACLE_HOME为OCI目录,否则报错(因为oci.dll要用别的dll):

OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

是的,我们没有配置ORACLE_HOME,包括找的精简版的安装包也没有配置此环境变量,更让人头疼的是,有些电脑不用配置也能正常连接Oracle,导致了我们疏忽了此问题。刚刚接手此项目栽了跟头。

ORACLE_HOME是配置oci所在bin的上一级目录,非bin目录。如果大家的运行环境没必要在XP系统上,大家还是用ODP.Net吧,貌似只支持.net framework 4.5。

为了方便大家解决此问题,记录在此,希望搜索引擎能搜索到帮助大家。

MySQL The user specified as a definer…does not exist问题

本人是在做hibernate开发时,执行某一条语句出现这个异常:

查了很多相似的问题,大部分都说是存储过程(Stored Procedure)或者视图(View)的权限问题,没有指定的definer用户。但本人的数据库中没有存储过程也没有视图,肯定不是这个问题了。

继续阅读

Struts2+Spring中抛出一般异常(checked exception)事务不回滚的问题

在用String进程事务管理时,Spring只会在运行时异常(runtime exception)抛出时回滚数据库操作,如果我们自定义的异常或者其他没有继承runtime exception的异常抛出时,String不会回滚事务。如果你的抛出某种异常时,有两种方法。

继续阅读