sql >> Databáze >  >> RDS >> Mysql

Spring-boot webová aplikace po chvíli ztrácí schopnost připojit se k MySQL / RDS

Pokud k definování připojení RDS ze souboru vlastností používáte automatickou konfiguraci:

cloud.aws.rds.testdb.password=testdbpwd
cloud.aws.rds.testdb.username=testdbuser
cloud.aws.rds.testdb.databaseName=testdb

Automatická konfigurace zdroje dat jarního spouštění nebude fungovat, i když je do konfiguračního souboru vložíte (nebo zdroj dat tomcat conf):

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true

Domnívám se, že toto je důvod, proč nemůžete ověřit svá připojení ve fondu, než je použijete.

Chcete-li nastavit vlastnosti fondu pro bean TomcatJdbcDataSourceFactory, musíte přepsat metodu postProcessAfterInitialization takto:

@Component
public class PoolConfiguration implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    if (bean instanceof TomcatJdbcDataSourceFactory) {
        TomcatJdbcDataSourceFactory tomcatJdbcDataSourceFactory = (TomcatJdbcDataSourceFactory) bean;
        tomcatJdbcDataSourceFactory.setTestOnBorrow(true);
        tomcatJdbcDataSourceFactory.setTestWhileIdle(true);
        tomcatJdbcDataSourceFactory.setValidationQuery("SELECT 1");
    }
    return bean;
}
}

Nenašel jsem pro to žádné jiné řešení. Mimochodem, může to být chyba jarní oblak-aws-autoconfigure paket.

Hodně štěstí!



  1. MySQL:Pojmenujte primární klíč v příkazu CREATE TABLE

  2. Rails-MySQL Error - neinicializovaná konstanta MysqlCompat::MysqlRes

  3. Jak uložit datum narození a věk, aby bylo možné věk denně aktualizovat v PHP/MySQL?

  4. Spusťte nativní SQL s hibernací