Если вы недавно столкнулись с такой проблемой, о ней будет сообщено по адресу com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1905).
на com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2351)
в com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
в com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
на com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
в com.mysql.jdbc.Connection.execSQL (Connection.java:2988)
в com.mysql.jdbc.Connection.execSQL (Connection.java:2917)
в com.mysql.jdbc.Statement.executeQuery(Statement.java:824)
в com.zycy.db.DbTrans.executeQuery(DbTrans.java:127)
Такая ошибка будет устранена после перезапуска службы Tomcat, но эта проблема возникнет в одночасье.
Формат URL-адреса mysql JDBC следующий:
jdbc:mysql://[хост:порт],[хост:порт].../[база данных][?Имя параметра 1][=Значение параметра 1][&Имя параметра 2][=Значение параметра 2].. .
Несколько часто используемых более важных параметров:
Имя параметра Описание параметра Значение по умолчанию Минимальные требования к версии
имя пользователя базы данных пользователя (используется для подключения к базе данных) все версии
пароль Пароль пользователя (используется для подключения к базе данных) Все версии
useUnicode Следует ли использовать набор символов Юникода. Если для параметраcharacterEncoding установлено значение gb2312 или gbk, для этого параметра должно быть установлено значение true false 1.1g
charterEncoding. Если для параметра useUnicode установлено значение true, задается кодировка символов. Например, его можно установить на gb2312 или gbk false 1.1g.
autoReconnect Когда соединение с базой данных прерывается ненормально, оно автоматически переподключается? ложь 1.1
autoReconnectForPools Использовать ли стратегию переподключения для пула подключений к базе данных false 3.1.3
failOverReadOnly После успешного автоматического повторного подключения устанавливается ли соединение только для чтения? правда 3.0.12
Если для параметра maxReconnects autoReconnect установлено значение true, количество повторных попыток подключения равно 3 1.1.
InitialTimeout Если для параметра autoReconnect установлено значение true, интервал времени между двумя переподключениями, единица измерения: секунды 2 1,1.
ConnectTimeout Тайм-аут при установлении сокетного соединения с сервером базы данных, единица измерения: миллисекунды. 0 означает отсутствие тайм-аута, применимо к JDK 1.4 и выше 0 3.0.1
SocketTimeout тайм-аут операции сокета (чтение и запись), единица измерения: миллисекунды. 0 означает, что таймаут никогда не истекает 0 3.0.1
В соответствии с китайской средой обычно URL-адрес подключения MySQL может быть установлен следующим образом:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
При использовании пула соединений с базой данных лучше всего установить следующие два параметра:
autoReconnect=true&failOverReadOnly=false
Следует отметить, что в файле конфигурации xml символ & в URL-адресе необходимо заменить на &. Например, при настройке пула подключений к базе данных в файле server.xml tomcat пример URL-адреса jdbc mysql выглядит следующим образом:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect