MySQL8.0-Too many connections-1040

生成原因
  • 数据库提供的连接数已经被使用完,再连接没有被释放完前是不可能会有新的连接提供。
  • 数据库可以提供多少链接,可以在my.cnf(linux)或者my.ini(windows)下设定,默认是max_connections=100
  • 在使用数据库连接的时候,会配置数据库连接池的最小连接数,最大连接数。在初始化连接池的时,配置的最小连接数就会来占据数据库提供的链接。
解决方法
  • 找到my.cnf(linux)或者my.ini(windows),找到max_connections,修改默认值。
    • 假设你没有这个max_connections,有可能是你的配置文件不对,笔者接手一个陌生的项目,不知道Mysql是docker安装的,需要去docker内把Mysql配置文件拷贝出来修改后,再丢进去覆盖原本的配置文件。
预防问题产生
  • 修改MySQL的wait-timeout参数,默认是八小时。

    • 也就是说一旦一个连接被占用,不管这个连接有没有被使用(操作数据库数据),时间长度达到八小时才会被归还(就比如公共厕所,有的人一进去就是八小时)
  • 知道了问题出现的原因,那么有就很多方法来进行预防,例如连接池配置,Java项目中的数据库配置等等都可以从这方面进行入手查询资料

原文地址:https://www.cnblogs.com/ChenQ2/p/15330475.html