我每隔一段时间就会随机收到此错误:“java.sql.SQLSyntaxErrorException:用户'{key}'已超出'max_user_connections'资源(当前值:10)”。
我已经尝试过谷歌搜索帮助,但我能找到的是:
- “增加最大连接数限制”(在免费的clearDB中无法做到这一点)
- “调整 maxActive 数量”或“释放旧连接”(这两个我都找不到如何在 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"));
}
最佳答案
每当您在代码中创建连接对象时,建议在finally block 中关闭该连接对象。这样连接数就不会耗尽。
希望这有帮助!
关于java - Spring Boot Rest + ClearDB mySQL "exceeded ' max_user_connections'“错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61522688/