My sql: PacketTooBigException: пакет для запроса слишком велик (4 739 923 > 65 535)
Я пытаюсь подключиться к базе данных на моем raspbery pi
, я имею mysql
скачал на пи и уже создал там базу данных. Я пытаюсь использовать диспетчер драйверов для подключения.
Вот мой код для этого:
public static void main(String[] args) {
try {
String host = "jdbc:mysql://scheduleit.duckdns.org:99/scheduleit";
String uName = username;
String uPass = password;
Connection con = DriverManager.getConnection(host, uName, uPass);
} catch (SQLException e) {
e.printStackTrace();
}
}
Я вошел в файлы конфигурации и изменил max_allowed_packet
в 32M
за [mysqldump
]. Я просмотрел другие файлы конфигурации и не смог найти другое поле max_allowed_packet для редактирования. Кроме того, я использовал команду: SET GLOBAL max_allowed_packet=32M;
в mysql
,
Мне было интересно узнать, было ли неправильное имя хоста. Я ssh в пи с использованием порта 99, но, возможно, я использую другой порт при подключении с DriverManager
? Порт по умолчанию для mysql
3306, и я попробовал это, но не получил соединение.
Наконец, я использую mariadb
По моему пониманию, это, по сути, mysql, так как я использую mysql -u root -p
команда. Любая помощь приветствуется.
1 ответ
Сервер MySQL и клиент (в данном случае JDBC) должны увеличить свои настройки для max_allowed_packet. Макс является фактически меньшей из конфигурации клиента и сервера.
Для сервера вы измените это с SET GLOBAL max_allowed_packet
, Вы также должны изменить его на сервере my.cnf
файл, потому что SET GLOBAL
изменения теряются при перезапуске сервера.
Для клиента, как прокомментировал Майкл выше, вы можете указать это как свойство в URL JDBC. За исключением свойств JDBC, записанных в camelCase.
String host = "jdbc:mysql://scheduleit.duckdns.org:99/scheduleit?maxAllowedPacket=33554432";
См. https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html для получения дополнительной документации по свойствам URL JDBC.