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

问题描述 投票:0回答:1

以下stmt适用于mysql但不适用于H2数据库

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

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

mysql spring-boot h2 flyway
1个回答
1
投票

这是因为数据库正在尝试将Java字符串转换为BLOB(字节字符串),将列的类型更改为BLOB定义为VARCHAR(大小)或TEXT。

你也可以看看这个链接https://dev.mysql.com/doc/refman/8.0/en/blob.html

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

© www.soinside.com 2019 - 2024. All rights reserved.