java - Spring Boot Rest + ClearDB mySQL "exceeded ' max_user_connections'“错误

标签 java mysql spring-boot spring-data-jpa cleardb

我每隔一段时间就会随机收到此错误:“java.sql.SQLSyntaxErrorException:用户'{key}'已超出'max_user_connections'资源(当前值:10)”。

我已经尝试过谷歌搜索帮助,但我能找到的是:

  1. “增加最大连接数限制”(在免费的clearDB中无法做到这一点)
  2. “调整 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/

相关文章:

java - 更好的 Java 方法语法?早归还是晚归?

java - 在 Tomcat 8.0.30 上启用 CORS

java - Android如何在继续之前等待代码完成

mysql - SQL 查询。连接但在一张表中,每个元组出现 2 次连接属性

java - 如何捕获未经检查的事务异常

java springdoc @ApiResponses 如何定义一个列表作为返回对象使用

java - 无法从中加载 Main-Class list 属性

mysql - SQL 查询 NOT IN 来自 3 个带条件的表

php - 保存上传的媒体内容

mysql - HIbernate 批量插入或更新在 Spring Boot 中不起作用