我有一个带有Spring Boot(1.3.3.RELEASE)/ Cloud(Brixton.M5)的应用程序,其中MySQL部署在Stackato CF中,我使用CrudRepository。不幸的是,当应用程序启动时,Spring Boot会自动使用Stackato提供的JDBC网址之一配置DataSource,其中包括用户名和密码,例如。
jdbc:mysql://yourUser:yourPassword@172.16.1.48:3306/yourDB
不幸的是,然后Spring Boot假设之前的所有内容:是我的主机,而yourPassword@172.16.1.48:3306是端口,最后我得到了一个讨厌的错误。
这是应用程序启动时看到的输出:
[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.266 INFO 148 --- [ main] urceCloudServiceBeanFactoryPostProcessor : Auto-reconfiguring beans of type javax.sql.DataSource
[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.303 INFO 148 --- [ main] o.c.r.o.s.c.s.r.PooledDataSourceCreator : Found Tomcat high-performance connection pool on the classpath. Using it for DataSource connection pooling.
[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.345 INFO 148 --- [ main] urceCloudServiceBeanFactoryPostProcessor : Reconfigured bean dataSource into singleton service connector org.apache.tomcat.jdbc.pool.DataSource@6a98a805{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=com.mysql.jdbc.Driver; maxActive=4; maxIdle=100; minIdle=0; initialSize=0; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:mysql://uk0pSal2suQS6:pajxAy1Yav22j@172.16.1.48:3306/dd558a39d22d44c059bb438d3b61941ef; username=null; validationQuery=/* ping */ SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=30000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAba
这是我后来得到的错误:
[app.0] 2016-05-27T18:23:19.000Z: 2016-05-27 11:23:19.767 WARN 148 --- [io-44230-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 01S00
[app.0] 2016-05-27T18:23:19.000Z: 2016-05-27 11:23:19.767 ERROR 148 --- [io-44230-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Illegal connection port value 'pajxAy1Yav22j@172.16.1.48:3306'
如何在不丢弃CrudTemplate的情况下解决这个问题? :)
我已经尝试在配置文件中使用spring.datasource.username和spring.datasource.password设置正确的spring.datasource.url,但是Spring Boot / Cloud似乎忽略了启动时那些有利于环境提供的变量。
答案 0 :(得分:3)
我发现的解决方法是我遵循了Binding to Data Services with Spring Boot in Cloud Foundry站点中描述的方法,有效地禁用了DataSource的自动重新配置,这导致从配置文件中获取连接参数(vs来自Stackato环境提供的变量。)