0

構成のあるmysqlサーバー8.0.21があります

character_set_client    utf8
character_set_connection    utf8
character_set_database  utf8
character_set_filesystem    binary
character_set_results   utf8
character_set_server    utf8
character_set_system    utf8

そして、文字セットが utf8mb4 のテーブル

CREATE TABLE `test` (`c0` TEXT) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

このコードは mysql-connector-java 5.1.18 で動作しています

Connection conn = DriverManager.getConnection("jdbc:mysql://hostxxxx/test?" +
        "user=userxxx&password=passxxx");
String sql = "INSERT INTO test(c0) value ('')"; 
conn.createStatement().execute(sql)

しかし、mysql-connector-java-5.1.44 (またはそれ以上) を使用すると、エラーが発生しますjava.io.IOException: Incorrect string value: '\xF0\x9F\x9A\x98\xF0\x9F...'

character_set_serverサーバー構成をに変更することで、このコードをバージョン 5.1.44++ で動作させることができますutf8mb4が、下位互換性があるため、変更できませんでした。

このコードが古いバージョン (mysql-connector-java-5.1.18) でどのように機能するかは誰でも知っていますが、バージョン (5.1.44 以降) では機能しません。このエラーに関連するトピックをいくつか見つけましたが、問題を解決できませんでした

4

0 に答える 0