当前位置: 首页 > 知识库问答 >
问题:

如何保持与MySQL数据库的连接?

郭意
2023-03-14

我正在尝试修复与MySQL数据库的连接问题。几个小时后,我的服务器意外地关闭了与MySQL数据库的连接。

这是我的错误代码:

通用域名格式。mysql。jdbc。例外。jdbc4。CommunicationsException:从服务器成功接收到的最后一个数据包是37521865毫秒前。最后一个成功发送到服务器的数据包是37521865毫秒前。长于服务器配置的“等待超时”值。在应用程序中使用之前,您应该考虑使连接过期和/或测试连接有效性,增加服务器为客户端超时配置的值,或者使用连接器/J连接属性“autoReconnect=true”来避免此问题。

这是我的MySQL java代码

public class MySQL {

public static String host = "localhost";
public static String port = "3306";
public static String database = "SignSystem";
public static String username = "SignSystem";
public static String password = "12345678910";
public static Connection con;

public static void connect() {
    if (!(isConnected())) {
        try {
            con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
            System.out.println("[MySQL] Connected successfully!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

public static void disconnect() {
    try {
        con.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

public static boolean isConnected() {
    return (con == null ? false : true);
}

public static void update(String qry) {
    if (!(isConnected())) {
        try {
            con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
            System.out.println("[MySQL] Connected successfully!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    try {
        PreparedStatement ps = con.prepareStatement(qry);
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    } else {
        try {
            PreparedStatement ps = con.prepareStatement(qry);
            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

public static ResultSet getResult(String qry) {
    
    try {
        PreparedStatement ps = con.prepareStatement(qry);
        return ps.executeQuery();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

public static Connection getConnection() {
    return con;
}

}

我已经尝试通过在执行任务之前检查数据库是否已连接来修复该问题。但我的解决方案似乎不起作用。

如何修复此错误?我想要自动重新连接或稳定连接。

共有1个答案

汪坚
2023-03-14

如果你正在寻找一个稳定的连接,请尝试在您的连接上使用String:

con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database+"?autoReconnect=true", username, password);
 类似资料:
  • 我遇到了这个问题:对于Vaadin7,我已经配置了我的持久性。xml,下面是代码 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“version=“2.0” 当我创建一个新的JPA容器并将其绑定到一个表时,我会在MSSQL活动监视器上看到我的新连接,但如果会话超时或注销,我仍然会在SQL上看到连接。 如果我在应用程序中重新登录,

  • 我正在尝试使用SpringBoot连接MySQL数据库,但我遇到以下错误: 应用程序无法以类路径启动:[文件:/C:/Dev/Repositorios/jira quality/target/classes/,文件:/C:/Users/jboscod/.m2/repository/mysql/mysql连接器java/8.0.21/mysql-connector-java-8.0.21.jar,文

  • 我使用的是ubuntu系统和Mysql 8.0。我试图用jdbc类连接数据库,但出现了一个错误,尽管我添加了mysql连接器。jar文件, 我在下面提到的错误-- JAVAlang.module。FindException:读取模块:/home/surya/eclipse workspace/Advancedjava/bin时出错,原因是:java。lang.module。InvalidModul

  • 问题内容: 我该怎么做? 我以为,我可以从数据库中读取某些内容,但是看起来太多了,是否有类似的东西? 问题答案: 您需要做的就是启动一个应用程序,如果未连接该应用程序将失败。您可以尝试的其他方法是在shell上尝试以下操作-

  • 问题内容: 我正在使用JBoss AS 7.1作为服务器,并且我的DataSource配置有缓冲池。我对此很陌生,所以请原谅任何菜鸟错误…毕竟我是来这里学习的。 客户端登录时,它将获得与数据库的连接,我需要保持该连接(从池中)处于打开状态,直到用户注销或HttpSession过期为止。这是来自数据库管理员的绝对要求。谁说他需要 数据库会话变量。 我正在为此使用 servlet 。 我在尝试各种可能

  • 问题内容: 我正在尝试从iPhone连接到远程mysql数据库。我搜索了许多网站,但没有找到任何帮助。如果有人为此工作,请发送解决方案。 问题答案: 假设您具有服务器端编程(例如PHP或Rails)的经验,则可以仅从URL内容创建NSArray,在其中建立与MySQL服务器的连接并以ASCII或XML格式打印所需的结果。 对帮助格式化服务器页面打印的结果也很有用:http : //develope