Ao encontrar tal problema recentemente, ele será relatado em com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1905)
em com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2351)
em com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
em com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
em com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
em com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
em com.mysql.jdbc.Connection.execSQL(Connection.java:2917)
em com.mysql.jdbc.Statement.executeQuery(Statement.java:824)
em com.zycy.db.DbTrans.executeQuery(DbTrans.java:127)
Esse erro será resolvido após reiniciar o serviço Tomcat, mas ocorrerá durante a noite.
O formato de URL JDBC do mysql é o seguinte:
jdbc:mysql://[host:port],[host:port].../[database][?Nome do parâmetro 1][=Valor do parâmetro 1][&Nome do parâmetro 2][=Valor do parâmetro 2].. .
Vários parâmetros mais importantes comumente usados:
Nome do parâmetro Descrição do parâmetro Valor padrão Requisito mínimo de versão
usuário nome de usuário do banco de dados (usado para conectar ao banco de dados) todas as versões
senha Senha do usuário (usada para conectar ao banco de dados) Todas as versões
useUnicode Se deve usar o conjunto de caracteres Unicode, se o parâmetro characterEncoding estiver definido como gb2312 ou gbk, o valor deste parâmetro deve ser definido como true false 1.1g
characterEncoding Quando useUnicode é definido como true, especifica a codificação de caracteres. Por exemplo, pode ser definido como gb2312 ou gbk false 1.1g
autoReconnect Quando a conexão com o banco de dados é interrompida de forma anormal, ela é reconectada automaticamente? falso 1.1
autoReconnectForPools Se deve usar a estratégia de reconexão para o conjunto de conexões de banco de dados false 3.1.3
failOverReadOnly Depois que a reconexão automática for bem-sucedida, a conexão será definida como somente leitura? verdadeiro 3.0.12
Quando maxReconnects autoReconnect é definido como verdadeiro, o número de novas tentativas de conexão é 3 1,1
inicialTimeout Quando autoReconnect é definido como verdadeiro, o intervalo de tempo entre duas reconexões, unidade: segundos 2 1,1
connectTimeout O tempo limite ao estabelecer uma conexão de soquete com o servidor de banco de dados, unidade: milissegundos. 0 significa nunca atingir o tempo limite, aplicável ao JDK 1.4 e superior 0 3.0.1
socketTimeout Tempo limite de operação do soquete (leitura e gravação), unidade: milissegundos. 0 significa nunca atingir o tempo limite 0 3.0.1
Correspondendo ao ambiente chinês, geralmente o URL de conexão mysql pode ser definido como:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
Ao usar um pool de conexões de banco de dados, é melhor definir os dois parâmetros a seguir:
autoReconnect=true&failOverReadOnly=false
Deve-se observar que no arquivo de configuração xml, o símbolo & no URL precisa ser escapado para &. Por exemplo, ao configurar o pool de conexões de banco de dados no server.xml do Tomcat, o exemplo de url jdbc do mysql é o seguinte:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect