首页 > 解决方案 > 使用 Postgresq 的 Spring Cloud 数据流

问题描述

我安装了scdf,我可以通过url和shell正确访问它。问题是,一旦我重新启动系统,我就失去了所做的一切(看到了基础 H2 的使用)。当我尝试按如下方式使用 Postgresql 时:

 java -Dloader.path=lib -jar spring-cloud-dataflow-server-2.2.1.RELEASE.jar \
  --spring.datasource.url=jdbc:postgresql://localhost:5432 / test \
  --spring.datasource.username=postgres \
  --spring.datasource.password=root \
  --spring.datasource.driver-class-name=org.postgresql.Driver &. I have the following error: 
 [           main] ConfigServletWebServerApplicationContext : Exception encountered during context 
 initialization - cancelling refresh attempt: 
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' 
 defined in class path resource 
 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 
 Bean instantiation via factory method failed; nested exception is 
 org.springframework.beans.BeanInstantiationException: Failed to instantiate 
 [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is 
 java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, 
 jdbc:postgresql://localhost:5432
 2019-11-20 13:38:54.610  INFO 29707 --- [           main] o.apache.catalina.core.StandardService   
 : Stopping service [Tomcat]
 2019-11-20 13:38:54.640 ERROR 29707 --- [           main] o.s.boot.SpringApplication               
 : Application run failed

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' 
 defined in class path resource 
 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 
 Bean instantiation via factory method failed; nested exception is 
 org.springframework.beans.BeanInstantiationException: Failed to instantiate 
 [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is 
 java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, 
 jdbc:postgresql://localhost:5432
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:307)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
    at  org.springframework.cloud.dataflow.server.single.DataFlowServerApplication.main(DataFlowServerApplication.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:47)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:86)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is 
java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, 
jdbc:postgresql://localhost:5432
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
    ... 29 common frames omitted
Caused by: java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, jdbc:postgresql://localhost:5432
        at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:108)
        at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:336)
        at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108)
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
        at com.zaxxer.hikari.HikariDataSource$$FastClassBySpringCGLIB$$eeb1ae86.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at  org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
        at com.zaxxer.hikari.HikariDataSource$$EnhancerBySpringCGLIB$$d16b7abf.getConnection(<generated>)
        at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
        at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:319)
        at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:356)
        at  org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$LocationResolver.getDatabaseDriver(FlywayAutoConfiguration.java:395)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$LocationResolver.resolveLocations(FlywayAutoConfiguration.java:378)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$LocationResolver.resolveLocations(FlywayAutoConfiguration.java:373)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.configureProperties(FlywayAutoConfiguration.java:192)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.flyway(FlywayAutoConfiguration.java:150)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration$$EnhancerBySpringCGLIB$$1bc90f93.CGLIB$flyway$1(<generated>)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration$$EnhancerBySpringCGLIB$$1bc90f93$$FastClassBySpringCGLIB$$61f0455.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
        at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration$$EnhancerBySpringCGLIB$$1bc90f93.flyway(<generated>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
        ... 30 common frames omitted

你能帮我吗!

标签: postgresql-9.3spring-cloud-dataflow

解决方案


似乎根本原因指向:

驱动 org.postgresql.Driver 声称不接受 jdbcUrl, jdbc:postgresql://localhost:5432

我注意到它的价值部分有一个明显的东西。/ test在数据库模式 [ee: ]之前和之后似乎有一个“空格” 。您可能想尝试如下:

 java -Dloader.path=lib -jar spring-cloud-dataflow-server-2.2.1.RELEASE.jar \
  --spring.datasource.url=jdbc:postgresql://localhost:5432/test \
  --spring.datasource.username=postgres \
  --spring.datasource.password=root \
  --spring.datasource.driver-class-name=org.postgresql.Driver

除此之外,我认为您的属性中没有任何错误,但我看到有些人成功地引用了双引号中的值 [参见:示例]。

也许您也可以尝试:

--spring.datasource.url="jdbc:postgresql://localhost:5432/test"


推荐阅读