无法连接到oracle数据库。它显示“无法从数据源确定jdbc url”

时间:2018-11-19 06:26:49

标签: java spring oracle spring-boot

我在项目中使用了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文件。

2 个答案:

答案 0 :(得分:2)

Oracle FAQ页之后,您定义JDBC URL的方式是错误的。首先,需要对此进行纠正:

旧的JDBC URL jdbc:oracle:thin@//192.168.1.5:1521/YourOracleServiceName

对此:

新的JDBC URL DCGCDB

考虑org.hibernate.dialect.Oracle10gDialect是您的Oracle服务名称。

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

您可以将org.hibernate.dialect.MySQL5InnoDBDialect用作方言,而不是dplyr

希望这会有所帮助!

答案 1 :(得分:-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