以下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执行。
答案 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类型,并且具有相同的最大长度和存储要求。