
[英]How to fix 'java.sql.SQLException: ORA-01017: invalid username/password; logon denied' error in spring-boot
[英]Failed to create/setup connection: ORA-01017 because setenv.sh environment variable has line break
我在 Spring Boot Data JPA 应用程序中收到此错误:
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:938) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:476) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:412) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:821) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:596) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:711) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:558) ~[ojdbc6-11.2.0.jar:12.1.0.1.0]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) [HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) [HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.2.0.jar:na]
我的 application.properties 具有以下属性:
spring.datasource.username=${NOTIF_USU}
spring.datasource.password=${NOTIF_PASS}
logging.level.com.zaxxer.hikari=DEBUG
我的 setenv.sh 看起来像这样:
export NOTIF_USU="stack"
export NOTIF_PASS="overflow"
我在日志中得到的是:
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : HikariPool-1 - configuration:
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : allowPoolSuspension.............false
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : autoCommit......................true
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : catalog.........................none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : connectionInitSql...............none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : connectionTestQuery.............none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : connectionTimeout...............30000
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : dataSource......................none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : dataSourceClassName.............none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : dataSourceJNDI..................none
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : dataSourceProperties............{password=<masked>}
2019-11-28 17:28:47.900 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : driverClassName................."oracle.jdbc.OracleDriver"
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : healthCheckProperties...........{}
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : healthCheckRegistry.............none
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : idleTimeout.....................600000
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : initializationFailTimeout.......1
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : isolateInternalQueries..........false
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : jdbcUrl.........................jdbc:oracle:thin:@99.99.99.99:1521:STACKOVERFLOW
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : leakDetectionThreshold..........0
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : maxLifetime.....................1800000
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : maximumPoolSize.................10
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : metricRegistry..................none
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : metricsTrackerFactory...........none
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : minimumIdle.....................10
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : password........................<masked>
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : poolName........................"HikariPool-1"
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : readOnly........................false
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : registerMbeans..................false
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : scheduledExecutor...............none
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : schema..........................none
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : threadFactory...................internal
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : transactionIsolation............default
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : username........................"stack
"
2019-11-28 17:28:47.901 DEBUG 81456 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : validationTimeout...............5000
请注意,倒数第二行有一个换行符。 当我在不使用环境变量的情况下运行它时,除了该行之外,一切都相同:
2019-11-28 17:30:46.947 DEBUG 81536 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : transactionIsolation............default
2019-11-28 17:30:46.947 DEBUG 81536 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : username........................"stack"
2019-11-28 17:30:46.947 DEBUG 81536 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : validationTimeout...............5000
如果我使用 CommandLineRunner 打印环境变量,但将“xxx”添加到 env.getProperty("NOTIF_USU") 和 env.getProperty("NOTIF_PASS") 的字符串中,我得到:
2019-11-29 10:40:41.226 INFO 84308 --- [ost-startStop-1] p.c.s.n.NotificacionesApplication : stack
xxx
2019-11-29 10:40:41.226 INFO 84308 --- [ost-startStop-1] p.c.s.n.NotificacionesApplication : overflow
xxx
这清楚地表明 setenv.sh 正在为我的环境变量值添加换行符。 我怎样才能克服这个问题?
就我而言,这似乎是 Oracle JDBC Driver 中的一个错误。
我将Oracle Database 19c (19.3)驱动程序更改为Oracle Database 12c Release 2 (12.2.0.1)并且它工作正常。
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.