Lorsque vous rencontrez un tel problème récemment, il sera signalé sur com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1905)
sur com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2351)
sur com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
sur com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
sur com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
sur com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
sur com.mysql.jdbc.Connection.execSQL(Connection.java:2917)
sur com.mysql.jdbc.Statement.executeQuery(Statement.java:824)
sur com.zycy.db.DbTrans.executeQuery(DbTrans.java:127)
Une telle erreur sera résolue après le redémarrage du service Tomcat, mais ce problème se produira du jour au lendemain.
Le format de l'URL mysql JDBC est le suivant :
jdbc:mysql://[hôte:port],[hôte:port].../[base de données][?Nom du paramètre 1][=Valeur du paramètre 1][&Nom du paramètre 2][=Valeur du paramètre 2].. .
Plusieurs paramètres plus importants couramment utilisés :
Nom du paramètre Description du paramètre Valeur par défaut Exigence de version minimale
utilisateur nom d'utilisateur de la base de données (utilisé pour se connecter à la base de données) toutes les versions
mot de passe Mot de passe utilisateur (utilisé pour se connecter à la base de données) Toutes les versions
useUnicode S'il faut utiliser le jeu de caractères Unicode, si le paramètre caractèreEncoding est défini sur gb2312 ou gbk, la valeur de ce paramètre doit être définie sur true false 1.1g
CharacterEncoding Lorsque useUnicode est défini sur true, spécifie le codage des caractères. Par exemple, il peut être défini sur gb2312 ou gbk false 1.1g
autoReconnect Lorsque la connexion à la base de données est interrompue anormalement, est-elle automatiquement reconnectée ? faux 1.1
autoReconnectForPools S'il faut utiliser la stratégie de reconnexion pour le pool de connexions à la base de données false 3.1.3
failOverReadOnly Une fois la reconnexion automatique réussie, la connexion est-elle définie en lecture seule ? vrai 3.0.12
Lorsque maxReconnects autoReconnect est défini sur true, le nombre de tentatives de connexion est de 3 1,1
initialTimeout Lorsque autoReconnect est défini sur true, l'intervalle de temps entre deux reconnexions, unité : secondes 2 1.1
connectTimeout Le délai d'attente lors de l'établissement d'une connexion socket avec le serveur de base de données, unité : millisecondes. 0 signifie ne jamais expirer, applicable au JDK 1.4 et supérieur 0 3.0.1
socketTimeout Délai d'expiration de l'opération de socket (lecture et écriture), unité : millisecondes. 0 signifie ne jamais expirer 0 3.0.1
Correspondant à l'environnement chinois, l'URL de connexion mysql peut généralement être définie sur :
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
Lorsque vous utilisez un pool de connexions à une base de données, il est préférable de définir les deux paramètres suivants :
autoReconnect=true&failOverReadOnly=false
Il convient de noter que dans le fichier de configuration XML, le symbole & dans l'URL doit être échappé dans &. Par exemple, lors de la configuration du pool de connexions à la base de données dans le fichier server.xml de Tomcat, l'exemple d'URL mysql jdbc est le suivant :
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect