我使用MAMP从MySQL数据库导出了一些blob十六进制值。我想这些值添加到一个数据库,H2,但我不断收到错误:无法将blob从MySQL传输到H2
org.h2.jdbc.JdbcSQLException: Hexadecimal string with odd number of characters: "80273753912952185238922745508880797601482513992540829416944108482201678079823009423240796439787688076562876906583780517704249256776629049440054030707230103901187860416530898080584543691951511619479802824069658267005899514817053628822676904964354186008390099680162497341280836375590099576180828248580706583256766125057680523862652582731318422096302127828322568212884418137380647350895148022669223845592468192584084729728626393575544"; SQL statement:
INSERT INTO `StatisticsExplanationActivity` VALUES(2, '2012-06-01 11:36:36', '0', '2012-06-01 11:36:37', 1, 16, 0x00aced0005737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a6578700000000577040000000a7400196d757365756d507265666572656e63655f6f7269656e74616c7400166d757365756d507265666572656e63655f70686f746f740014696465616c686f6c79646179735f75726261696e7400176e696768744576656e696e67486f6262795f6d757369637400106d75736963616c54617374655f706f7078) -- (2, '2012-06-01 11:36:36', '0', '2012-06-01 11:36:37', 1, 16, 80273753912952185238922745508880797601482513992540829416944108482201678079823009423240796439787688076562876906583780517704249256776629049440054030707230103901187860416530898080584543691951511619479802824069658267005899514817053628822676904964354186008390099680162497341280836375590099576180828248580706583256766125057680523862652582731318422096302127828322568212884418137380647350895148022669223845592468192584084729728626393575544) [90003-166]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.util.StringUtils.convertHexToBytes(StringUtils.java:990)
相同的INSERT线工作正常使用MySQL。我在其他一些话题上看到,当启用H2的多线程模式时可能会发生这种情况。我想尝试一下,但我不知道如何使用Play来设置该参数! 1.2.x.
编辑:试了MULTI_THREADED的东西,但仍然得到相同的错误。 EDIT2:忘记而我使用的十六进制数:
0xaced0005737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a6578700000000577040000000a7400196d757365756d507265666572656e63655f6f7269656e74616c7400166d757365756d507265666572656e63655f70686f746f740014696465616c686f6c79646179735f75726261696e7400176e696768744576656e696e67486f6262795f6d757369637400106d75736963616c54617374655f706f7078
您是否尝试过填充斑点与奇数个字符与前一个'0'? – F21 2012-07-24 08:47:51
是的,但没有用,因为在错误消息中它抱怨数字的十进制版本(这不会通过添加0来改变)。 – user1502150 2012-07-24 08:52:18
很可能0x00aced0 ..被解释为一个数字(Java BigDecimal),然后数据库尝试将toString()表示形式转换为二进制形式。这在50%的情况下失败了。所以,而不是0x00aced0 ...使用'00aced0 ...'(引用) – 2012-07-24 13:52:07