【问题标题】:Unable to connect to oracle database.It says "Unable to determine jdbc url from datasource"无法连接到 oracle 数据库。它说“无法从数据源确定 jdbc url”
【发布时间】:2019-04-21 12:00:57
【问题描述】:

我在我的项目中使用了 Spring Boot,并且我的 oracle 数据库的几个属性需要指定。它们是:

Schema Name=OWNER
Password=OWNER
Database Name=DCGCDB

它位于我的服务器中,因此要连接的 IP 是 192.168.1.5,端口号是 1521。

所以在我的application.properties 文件中,我做了一些设置来连接数据库,这里是:

# Oracle settings
spring.datasource.url=jdbc:oracle:thin:192.168.1.5:1521:DCGCDB
spring.datasource.username=OWNER
spring.datasource.password=OWNER
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver

## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

spring.jpa.show-sql=true

# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
#logging.level.=debug

但是在构建项目时出现如下错误:

o.s.b.a.orm.jpa.DatabaseLookup - Unable to determine jdbc url from
datasource org.springframework.jdbc.support.MetaDataAccessException:
Could not get Connection for extracting meta-data; nested exception is
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to
obtain JDBC Connection; nested exception is
java.sql.SQLRecoverableException: IO Error: The Network Adapter could
not establish the connection    at
org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:328)

我已经在 pom.xml 中添加了 oracle jar 文件

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0</version>
</dependency>

并且还执行了mvn install:install-file -Dfile=oracle-ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar语句来安装oracle jar文件。

【问题讨论】:

  • 方言错误?!
  • 我需要做什么改变?

标签: java spring oracle spring-boot


【解决方案1】:

尝试从这样的代码中删除DataSourceAutoConfiguration

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

还要验证所有属性是否已设置,例如。

spring.datasource.url= 
spring.datasource.username=<username>
spring.datasource.password=<password>
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update

【讨论】:

  • 它显示错误 java.lang.IllegalStateException: Failed to load ApplicationContext 错误并且还显示许多错误注入点具有以下注释:-@org.springframework.beans.factory.annotation.Autowired (必需=真)。
  • @ashwinkarki 修改了帖子
  • 你为什么用com.mysql.jdbc.Driver?
  • 我正在使用 oracle
  • 他询问了甲骨文。问题在于*.url
【解决方案2】:

Oracle FAQ 页面之后,您定义 JDBC URL 的方式是错误的。这首先需要纠正,从这里:

旧 JDBC URLjdbc:oracle:thin:192.168.1.5:1521:DCGCDB

到这里:

新的 JDBC URLjdbc:oracle:thin@//192.168.1.5:1521/YourOracleServiceName

考虑到 DCGCDB 是您的 Oracle 服务名称。

其次,Oracle 使用的方言有所不同。不知道为什么!!!

您可以在方言中使用org.hibernate.dialect.Oracle10gDialect 而不是org.hibernate.dialect.MySQL5InnoDBDialect

希望对你有帮助!!!

【讨论】:

  • 不客气@ashwinkarki。很高兴我能帮上忙!
猜你喜欢
  • 2019-09-04
  • 2019-01-31
  • 2018-08-10
  • 2018-12-25
  • 2016-12-07
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多