【问题标题】:No database instance with id:' ' found. Please specify a valid db instance未找到 ID 为“”的数据库实例。请指定一个有效的数据库实例
【发布时间】:2015-11-03 18:14:56
【问题描述】:

我将在我的 Spring Boot Web 应用程序中使用 Amazon RDS 因此,我创建了具有“mainrds”实例 ID Screen Capture 的 RDS。然后我像这样配置application.properties

#RDS
cloud.aws.rds.mainrds
cloud.aws.rds.mainrds.username=dbadmin
cloud.aws.rds.mainrds.password=password
cloud.aws.rds.mainrds.readReplicaSupport=false
cloud.aws.rds.mainrds.databasename=maindata

当我运行应用程序时,我遇到了这些错误消息:

Caused by: java.lang.IllegalStateException: No database instance with id:'mainrds' found. Please specify a valid db instance
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.getDbInstance(AmazonRdsDataSourceFactoryBean.java:170)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createDataSourceInstance(AmazonRdsDataSourceFactoryBean.java:151)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:129)
    at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:45)
    at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    ... 178 common frames omitted

我不知道问题出在哪里。什么是缺失点?

【问题讨论】:

  • 你能解释一下你是如何提供这个属性文件的吗?

标签: java amazon-web-services spring-boot


【解决方案1】:

我遇到了同样的问题。

spring-cloud-aws 可能无法自行解析正确的aws region。如果您只位于一个区域,请将其插入到您的属性文件中,其中包含您的 RDS 实例所在的区域。

cloud.aws.region.static=us-east-1

这解决了我的问题。

你也可以试试:

cloud.aws.region.auto=true

查看 EC2 元数据服务是否可以解析正确的区域。

也可以通过连接。正常的 spring-boot 设置,您只需在数据源的 url 中指定 RDS 实例端点,如下所示:(对于 postgresql 实例)

spring.datasource.url=jdbc:postgresql://endpoint.of.rds.instance.amazonaws.com:5432/dbname

当然还要在 application.properties 中提供 datasource.platformdatasource.usernamedatasource.passwordspring.database.driverClassNamespring.jpa.database

【讨论】:

    【解决方案2】:

    接受的答案对我不起作用。

    经过一些调试,我发现问题中给出的 application.properties 不正确:

    #RDS
    cloud.aws.rds.mainrds #this line has to be deleted
    cloud.aws.rds.mainrds.username=dbadmin
    cloud.aws.rds.mainrds.password=password
    cloud.aws.rds.mainrds.readReplicaSupport=false
    cloud.aws.rds.mainrds.databasename=maindata
    

    删除cloud.aws.rds.mainrds 行后一切正常。

    使用spring.datasource.* 不是一个选项,因为我们对 RDS 使用 IAM 身份验证,因此必须每 15 分钟重新生成一次密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2014-09-17
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多