itsource

대량 삽입 중에 MariaDB jdbc 연결이 실패함

mycopycode 2022. 9. 13. 22:13
반응형

대량 삽입 중에 MariaDB jdbc 연결이 실패함

MariaDB에 다음 사양의 테이블이 있습니다.

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;

이 테이블에 200만 장 정도의 레코드를 삽입하고 싶습니다.그러나 약 16K 레코드를 삽입한 후 연결 다이(die)가 발생하며 다음과 같은 예외가 발생합니다.

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입니다.

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

MySQL Connector/J만 사용해 보셨나요?MySQL과 MariaDB는 바이너리 호환성이 있기 때문에 문제가 발생한 적은 없습니다.MySQL Connector는 훨씬 더 큰 커뮤니티의 이점을 제공합니다.

언급URL : https://stackoverflow.com/questions/18693800/mariadb-jdbc-connection-fails-during-bulk-inserts

반응형