H2 jdbc异常-具有奇数个字符的十六进制字符串

时间:2018-08-31 14:52:30

标签: mysql spring-boot h2 flyway

以下stmt在mysql上有效,但不适用于H2数据库

插入XXX(内容)   选择          兑换('{                                   “ text”:“ testsee”,                                   “ url”:“ http://hjh.com”,                                   “电话” : ””                                 }',BINARY)作为内容   来自...

SQL状态:90003 错误代码:90003 消息:十六进制字符串,带有奇数个字符:“ {                                   “” text“”:“” testsee“”,                                   “” url“”:“” http://hjh.com“”,                                   ““电话”” : ””””                                 }“; SQL语句: 谁能告诉我该如何解决这个问题? content列的类型为blob。 这是一个弹簧引导微服务,其中的测试在H2上运行。 stmt用puresql编写,并在启动期间由flyway执行。

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为数据库试图将Java字符串转换为BLOB(字节字符串),将列的类型更改为BLOB定义为VARCHAR(size)或TEXT。

您还可以检查此链接https://dev.mysql.com/doc/refman/8.0/en/blob.html

  

BLOB是一个二进制大对象,可以容纳可变数量的数据。四种BLOB类型是TINYBLOB,BLOB,MEDIUMBLOB和LONGBLOB。这些仅在它们可以容纳的值的最大长度上有所不同。四种TEXT类型是TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT。它们对应于四种BLOB类型,并且具有相同的最大长度和存储要求。