Я периодически получаю эту ошибку случайным образом: "java. sql .SQLSyntaxErrorException: пользователь '{key}' превысил ресурс 'max_user_connections' (текущее значение: 10)".
Я попытался найти справку по поиску, но все, что я могу найти, это:
- "увеличить максимальный лимит подключений" (что невозможно сделать в бесплатной clearDB)
- «настроить максимальное значение» или «освободить старые подключения» (оба из которых я не могу найти, как это сделать в Spring Boot)
Вот как выглядит мой код:
// application.properties
# Connect to heroku ClearDB MySql database
spring.datasource.url=jdbc:mysql://{heroku_url}?reconnect=true
spring.datasource.username={user}
spring.datasource.password={password}
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto=update
#MySQL DIALECT
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.open-in-view=false
server.port=8080
@Configuration
public class DatabaseConfig {
@Value("${spring.datasource.url}")
private String dbUrl;
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(dbUrl);
return new HikariDataSource(config);
}
}
РЕДАКТИРОВАТЬ 1: Я следовал инструкциям PauMAVA, как мог, и я придумал этот код, который по какой-то причине не работает:
@Configuration
public class DatabaseConfig {
@Value("${spring.datasource.url}")
private String dbUrl;
public static DataSource ds;
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(dbUrl);
DataSource ds = new HikariDataSource(config);
DatabaseConfig.ds = ds;
return ds;
}
}
// Main class
public static void main(String[] args) {
SpringApplication.run(BloggerApplication.class, args);
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
DataSource ds = DatabaseConfig.ds;
if (ds != null) {
try {
ds.getConnection().close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}, "Shutdown-thread"));
}