2013-09-09 4 views
2

У меня есть таблица в MariaDB с этой спецификацией:MariaDB JDBC не удается установить соединение во время массовой вставки

CREATE TABLE `pages_txt` (
    `id` INT(10) UNSIGNED NOT NULL, 
    `title` TEXT NOT NULL, 
    `txt` MEDIUMTEXT NOT NULL, 
    PRIMARY KEY (`id`) 
) 
COLLATE='utf8_general_ci' 
ENGINE=MyISAM; 

и я хочу, чтобы вставить около 2 миллионов записей в этой таблице. Однако, после установки около 160K записей соединения умирает, и я получаю это исключение:

at Main.main(Main.java:57) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.mariadb.jdbc.internal.common.QueryException: Could not send query: Last packet not finished 
    at org.mariadb.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:954) 
    at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:278) 
    ... 21 more 
Caused by: java.io.IOException: Last packet not finished 
    at org.mariadb.jdbc.internal.common.packet.PacketOutputStream.startPacket(PacketOutputStream.java:38) 
    at org.mariadb.jdbc.internal.common.packet.commands.StreamedQueryPacket.send(StreamedQueryPacket.java:76) 
    at org.mariadb.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:952) 
    ... 22 more 
java.sql.SQLNonTransientConnectionException: Could not send query: Last packet not finished 
    at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:136) 
    at org.mariadb.jdbc.internal.SQLExceptionMapper.throwException(SQLExceptionMapper.java:106) 
    at org.mariadb.jdbc.MySQLStatement.executeQueryEpilog(MySQLStatement.java:262) 
    at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:285) 
    at org.mariadb.jdbc.MySQLStatement.executeUpdate(MySQLStatement.java:313) 
    at org.mariadb.jdbc.MySQLPreparedStatement.executeUpdate(MySQLPreparedStatement.java:156) 
    at Main$1.process(Main.java:50) 

, но сервер MariaDB это и работает! Есть ли ошибки в JDBC-коннекторе ??? Версия 5.5.32-MariaDB.

+0

Сообщите об ошибке в JIRA (https://mariadb.atlassian.net/) и включите файл данных. Также укажите параметры для базы данных и т. Д. –

+0

Когда это произошло со мной, я использовал mariaDB для своего источника данных, используя JBoss AS 7 Final. Он работал отлично, пока я решил отказаться от своей базы данных во время работы JBoss, а затем воссоздать базу данных. Что я сделал, чтобы решить проблему, просто перезапустил JBoss. –

ответ

-1

https://dev.mysql.com/downloads/connector/j/

Вы пробовали только с помощью MySQL Connector/J? MySQL и MariaDB совместимы с двоичными файлами, и я никогда не сталкивался с такими проблемами. Соединитель MySQL имеет преимущество значительно большего сообщества.

+0

Если у вас есть проблемы с лицензированием, в комплекте с соединителем MariaDB J входит LGPL, который менее ограничительный, чем у MySQL (GPL). –

+0

Ваш ответ неправильный, но с помощью соединителя MySQL я обнаружил, что ошибка находится в драйвере JDBC от MariaDB. Поэтому я принял это :) –