oracle jdbc连接报错:违反协议

oracle版本:11.2.0.2

?连接方式:spring jdbctemplate连接数据库,通过ClassPathXmlApplicationContext("vodbossContext.xml")加载配置文件。

在做单元测试包如下错误:

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (违反协议)

at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)

at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:577)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)

at com.topdvte.vodsea.client.dao.VodCustDao.insert(VodCustDao.java:21)

at com.topdvte.vodsea.client.dao.VodCustDaoTest.testInsert(VodCustDaoTest.java:40)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at junit.framework.TestCase.runTest(TestCase.java:168)

at junit.framework.TestCase.runBare(TestCase.java:134)

at junit.framework.TestResult$1.protect(TestResult.java:110)

at junit.framework.TestResult.runProtected(TestResult.java:128)

at junit.framework.TestResult.run(TestResult.java:113)

at junit.framework.TestCase.run(TestCase.java:124)

at junit.framework.TestSuite.runTest(TestSuite.java:232)

at junit.framework.TestSuite.run(TestSuite.java:227)

at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (违反协议)

at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)

at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)

at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)

... 25 more

Caused by: java.sql.SQLException: 违反协议

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)

at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:944)

at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:521)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:262)

at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:307)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)

at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)

at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247)

at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)

... 28 more

这个问题查了大半天,对一下几点做出:

1、jdbc配置出错

2、用户密码不对

3、查看oracle错误日志,不是很会查看

4、oracle驱动版本不对

对上面的每项都做了验证,还是不对,后来重启了下eclipse,就OK了

最终确定是oracle驱动版本不对

为啥要重启后才能生效,这个问题一直没有明白,有谁知道可以告知。

总结:

  错误信息提示就已经报错问题出在jdbc oracle包中,没有抓准,导致找错方向,白忙活了。

  Caused by: java.sql.SQLException: 违反协议

  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)

  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)

  at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:944)

  at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:521)

时间: 2024-08-08 12:06:55

oracle jdbc连接报错:违反协议的相关文章

Java-解决SSH集成时,oracle报错:Error while registering Oracle JDBC Diagnosablility MBean

今天在做项目练习时,在集成SSH后,发现控制台有oracle的报错: Error while registering Oracle JDBC Diagnosability MBean. javax.management.MalformedObjectNameException: Invalid character ' ' in value part of property at javax.management.ObjectName.construct(ObjectName.java:602)

解决oracle服务器重启之后连接报错的问题

DB服务器重启之后再连接报错如下: 原因是重启之后listener.ora被还原成初始文件,sid被清空. 解决步骤: 1.查看监听服务和数据库服务: 由此找到listener.ora文件的路径:D:\oracle\product\10.2.0\db_2\network\ADMIN 修改如下(红色标记是添加部分): # listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_2\network\admin\list

mysql连接报错 ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket

安装完mysql连接报错: [[email protected] app]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) [[email protected] app]# mysql -uroot -p Enter password:  ERROR 2002 (HY000): Can't connect to local M

registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. (转)

最近项目中遇见一问题,在开发环境没有问题的代码,到了生产环境就会报如下错误: 严重: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregiste

监听报错 TNS-00525: Insufficient privilege for operation 11gR2 + 连接报错ORA-12537: TNS:connection closed

1.TNS-00525: Insufficient privilege for operation Started with pid=30869 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora11g)(PORT=1521))) Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) TNS-12555: TNS:permissio

关于cognos Framework报oracle.jdbc.driver.T4CPreparedStatement错误

这个是之前某天在技术群的一位群友问的问题 说cognos Framework测试数据报错 具体如下图 具体报错信息 oracle.jdbc.driver.T4CPreparedStatement.getParameterMetaData()Ljava/sql/ParameterMetaDate; 百度了一下,找不到什么有用的资料~~~ 比较多都提出了,但好像都没有具体解决了的方案 接着我换谷歌,搜了一下,在某个人的博客看到相对有用的信息 而那个博客的作者的情况是在进行java开发连接数据库时发生

mysql 8.0 java连接报错:Unknown system variable &#39;query_cache_size&#39;

java连接mysql 8.0.11报错 java.sql.SQLException: Unknown system variable 'query_cache_size' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513) at co

maven打包oracle jdbc驱动

背景 由于版权问题,maven中央仓库缺少oracle jdbc的驱动,这个给开发带来了很多不便利性.也出现各种各样的解决方案,基本就两种思路: 将oracle驱动安装到本地仓库,这个需要大家统一好名称和版本 使用第三方仓库 不管哪种方案,本来maven就是为了方便开发人员管理包依赖,这样一来反而更麻烦.当然,不是maven的错,oracle这事做的确实够sb.(听说oracle要对java进行收费???)那么有没有更好的方案,假设你现在开发了一个框架,框架支持多数据库,并且已经将jar包提交至

12月12 mysql连接报错

一.mysql连接报错 mysql5.5 springboot2.0 The server time zone value '?D1ú±ê×?ê±??' is unrecognized or represents 修改my.ini 搜索[mysqld]节点在节点下面加上下面这句话 default-time-zone='+08:00' 然后记得重启MySQL的服务,打开cmd窗口登录MySQL执行show variables like '%time_zone%';这句命令 其他方法就是修改连接的u