我使用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