gpt4 book ai didi

java - 尝试将字节插入数据库时​​出现异常(MySQL)

转载 作者:行者123 更新时间:2023-11-29 13:23:42 24 4
gpt4 key购买 nike

我正在尝试使用TEXT NOT NULL列将此记录插入数据库(并尝试使用utf8和unicode等变体),但到目前为止还没有运气获得这个该死的插入在Java中工作。我在 Python 中似乎没有遇到这些问题,但我需要做的是将这些数据存储在我的 java 服务器中,然后使用我的 Python 网站检索它。我在下面提供了一小段代码和 Java 异常。我花了很多时间将 MySQL 从 5.1 升级到 5.6,因为我在网上读到字节的处理方式不同,但这没有帮助。

很高兴提供任何有帮助的其他信息。

public static byte[] compress(String str) throws Exception {
if (str == null || str.length() == 0) {
return null;
}

ByteArrayOutputStream obj = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(obj);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
return obj.toByteArray();
}

byte [] bytes = null;
try {
bytes = compress(test); // test is a huge JSON String
} catch (Exception e) {
e.printStackTrace();
}
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/badlionDev?"
+ "user=root&password=password&useUnicode=true&characterEncoding=UTF-8");
preparedStatement = connect.prepareStatement("UPDATE kit_pvp_matches SET data = ?;");
// "myuser, webpage, datum, summary, COMMENTS from FEEDBACK.COMMENTS");
// Parameters start with 1
preparedStatement.setBytes(1, bytes);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
}


java.sql.SQLException: Incorrect string value: '\x8B\x08\x00\x00\x00\x00...' for column 'data' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2459)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2376)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2360)
at TestCompression.main(TestCompression.java:34)

最佳答案

应将字符集设置为 BINARY 或使用 BLOB 类型。如果将其设置为 UTF-8,MySQL 需要有效的 UTF-8 数据。异常(exception)情况是这不是有效的 UTF-8 数据。

关于java - 尝试将字节插入数据库时​​出现异常(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20429260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com