Java 为什么我会得到;格式错误:属性为';v$session.program'&引用;连接到Oracle?
我正在从Java应用程序连接到Oracle 11g数据库。我得到以下异常:Java 为什么我会得到;格式错误:属性为';v$session.program'&引用;连接到Oracle?,java,oracle,maven,oracle11g,Java,Oracle,Maven,Oracle11g,我正在从Java应用程序连接到Oracle 11g数据库。我得到以下异常: Caused by: java.sql.SQLException: Connection property: format error: Property is 'v$session.program' and value is '<My Maven application's name>' at oracle.jdbc.driver.T4CConnection.validateConnectionProper
Caused by: java.sql.SQLException: Connection property: format error: Property is 'v$session.program' and value is '<My Maven application's name>'
at oracle.jdbc.driver.T4CConnection.validateConnectionProperties(T4CConnection.java:4540)
at oracle.jdbc.driver.PhysicalConnection.readConnectionProperties(PhysicalConnection.java:2345)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:517)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
at oracle.ucp.jdbc.DataSourceConnectionFactoryAdapter.createConnection(DataSourceConnectionFactoryAdapter.java:100)
原因:java.sql.SQLException:Connection属性:格式错误:属性为'v$session.program',值为'我们找到了答案。我们的应用程序名称太长了一个字符:它是49
字符,而不是48
或更少
以下是v$session
属性及其长度限制的列表:
v$session.machine
:64
v$session.iname
:无限制
v$session.ename
:无限制
v$session.进程
:24
v$session.program
:48
v$session.终端
:30
v$session.oser
:30
另外,没有一个属性可以匹配这个正则表达式:*[\00\(\)].*
,我认为这意味着没有括号
如果您遇到错误并想查看代码,只需在IDE中为SQLException
添加一个异常断点即可。您应该最终进入一个名为t4Connection.class
的类
下面是该方法的反编译代码,validateConnectionProperties()
:
void validateConnectionProperties()引发SQLException{
super.validateConnectionProperties();
字符串var1=“.[\\00\\(\\)].*”;
sqlexceptionvar2;
如果(this.thinvsessionsuser==null | |!this.thinvsessionsuser.matches(var1)&&this.thinvsessionsuser.length()您的连接字符串是什么(当然不包括密码)?
void validateConnectionProperties() throws SQLException {
super.validateConnectionProperties();
String var1 = ".*[\\00\\(\\)].*";
SQLException var2;
if(this.thinVsessionOsuser == null || !this.thinVsessionOsuser.matches(var1) && this.thinVsessionOsuser.length() <= 30) {
if(this.thinVsessionTerminal == null || !this.thinVsessionTerminal.matches(var1) && this.thinVsessionTerminal.length() <= 30) {
if(this.thinVsessionMachine != null && (this.thinVsessionMachine.matches(var1) || this.thinVsessionMachine.length() > 64)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.machine\' and value is \'" + this.thinVsessionMachine + "\'");
var2.fillInStackTrace();
throw var2;
} else if(this.thinVsessionProgram == null || !this.thinVsessionProgram.matches(var1) && this.thinVsessionProgram.length() <= 48) {
if(this.thinVsessionProcess == null || !this.thinVsessionProcess.matches(var1) && this.thinVsessionProcess.length() <= 24) {
if(this.thinVsessionIname != null && this.thinVsessionIname.matches(var1)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.iname\' and value is \'" + this.thinVsessionIname + "\'");
var2.fillInStackTrace();
throw var2;
} else if(this.thinVsessionEname != null && this.thinVsessionEname.matches(var1)) {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.ename\' and value is \'" + this.thinVsessionEname + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.process\' and value is \'" + this.thinVsessionProcess + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.program\' and value is \'" + this.thinVsessionProgram + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.terminal\' and value is \'" + this.thinVsessionTerminal + "\'");
var2.fillInStackTrace();
throw var2;
}
} else {
var2 = DatabaseError.createSqlException((OracleConnection)null, 190, "Property is \'v$session.osuser\' and value is \'" + this.thinVsessionOsuser + "\'");
var2.fillInStackTrace();
throw var2;
}
}