準備済みステートメントを使用せずに、バイナリ データを MySQL データベースに挿入しようとしています。この理由は、何千ものステートメントを 1 回の挿入で 1 回の実行に連結するためです。(まさに MySQL のダンプとインポートの仕組み)
次のステートメントを試しましたが、すべて失敗しています。
INSERT INTO my_table VALUES (1,'g=���F|�}X���',2);
INSERT INTO my_table VALUES (1,CAST( 'g=���F|�}X���' AS BINARY),2);
INSERT INTO my_table VALUES (1,CONVERT( 'g=���F|�}X���', BINARY),2);
INSERT INTO my_table VALUES (1,BINARY 'g=���F|�}X���',2)
私が得るエラーは次のとおりです。
com.mysql.jdbc.MysqlDataTruncation: データの切り捨て: 行 1 の列 'binary_data' のデータが長すぎます
ステートメントを実行するために使用するコードは次のとおりです。
conn.createStatement().executeUpdate(sql);
PreparedStatements は正常に動作します (ただし、この場合は遅すぎます)
データベース内の実際の文字列 I は、少し異なって表示されます。
g=÷óF|¸}X£ì[
バイナリ ビュー: 67 3d 81 f7 19 f3 46 7c b8 7d 58 8c 10 a3 ec 5b
Java バイト: 103、61、-127、-9、25、-13、70、124、-72、125、88、-116、16、-93、-20、91
これは Encoding と関係があるのでしょうか?
どんなヒントでも大歓迎です、Ro