我正在尝试将此记录插入到数据库中,其中包含TEXT NOT NULL
列(并尝试使用utf8和unicode等),但到目前为止,在Java中使用这个dang插件工作时没有运气。我似乎没有在Python中遇到这些问题,但我需要做的是将这些数据存储在我的java服务器中,然后使用我的Python网站检索它。我提供了一小段代码和下面的Java异常。我花了很多时间将MySQL从5.1升级到5.6,因为我在网上看到Bytes的处理方式不同,但这没有帮助。
很高兴提供有用的其他信息。
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)
答案 0 :(得分:1)
您应该将字符集设置为BINARY或使用BLOB类型。如果将其设置为UTF-8,则MySQL需要有效的UTF-8数据。例外情况是说这不是有效的UTF-8数据。