当前位置: 首页 > 知识库问答 >
问题:

值对于列来说太长-错误持续LocalDate

左丘昊天
2023-03-14

我在持久化LocalDate字段[在列中使用VARCHAR(20)类型]时收到以下错误:

Value too long for column "BIRTH_DATE VARCHAR(20)":"'aced00057372000d6a6176612e74696d652e536572955d84ba1b2248b20c00007870770703000007e2060c78' (88)";

字段定义如下:

@Column(name = "BIRTH_DATE")
private LocalDate date;
@Column(name = "BIRTH_TIME")
private LocalTime time;

我使用的是spring data starter(1.5.9版本)。它在内部使用hibernate 5.0.12。

根据博文https://www.thoughts-on-java.org/hibernate-5-date-and-time/

Hibernate 5,支持Java 8特性(DateTime API)。那么,为什么会出现这种错误呢。

如果将列类型更改为DATE,则错误将更改为以下内容:

java.lang.IllegalArgumentException: aced00057372000d6a6176612e74696d652e536572955d84ba1b2248b20c00007870770703000007e2060c78
    at org.h2.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:313) ~[h2-1.4.196.jar:1.4.196]

共有1个答案

沙宣
2023-03-14

您遇到的字符串是序列化对象的十六进制表示,可以轻松验证:

ByteArrayInputStream is = new ByteArrayInputStream(new BigInteger(
    "aced00057372000d6a6176612e74696d652e536572955d84ba1b2248b20c00007870770703000007e2060c78", 16)
      .toByteArray());
is.read();
ObjectInputStream ois = new ObjectInputStream(is);
final Object obj = ois.readObject();
System.out.println(obj+" ("+obj.getClass().getName()+')');
2018-06-12 (java.time.LocalDate)

当然,将LocalDate存储为blob并不是真正的DateTime API支持的标志,因为这应该是存储值的最后手段。要么是没有支持,要么是没有正确配置。在任何一种情况下,你都必须重新检查环境。

 类似资料:
  • 错误代码:1406。数据对于列来说太长了 现在一些值 插入的记录 如果我们 它显示了错误信息 错误代码:1406。数据对于列来说太长了 但我的期望是,我想在表中插入至少前45个字符 如果问题不清楚,请告诉我。 我知道此错误的原因。我正在尝试插入超过数据类型长度的值。 我想要MySQL中的解决方案,因为它可以在MSSQL中使用。所以我希望它也能在MySQL中使用。

  • 我有我的班级电影: 和我的控制器方法: 我得到一个错误: Servlet.service()的servlet[springDispatcher]在上下文与路径[/web编程]抛出异常[请求处理失败;嵌套异常org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常是org.hibernate.except

  • 我是Grails新手,不太熟悉GORM如何将列映射到jdbc实现。基本上我有以下错误: 组织。h2.jdbc。JdbcSQLException 消息: “KEYWORDS BINARY(255)”列的值太长:“X'ACED0005737200116A6176612E7574696C2E486173684D61700507DAC131660D1030002460A6C6F6164466163746F

  • 我正在为我的公司设计一个RoR项目,我们的开发团队已经遇到了一些关于设计的争论,特别是数据库。 我们有一个名为的模型,需要持久化。这是一个非常非常小的模型,除了 id 之外只有三个 db 列,但是当我们投入生产时,可能会有很多这样的模型。我们每天看到多达 1,000,000 次插入。模型将只能由其上的两个外键搜索,这些外键可以索引。同样,这些模型永远不必被删除,但我们也不必在它们大约三个月大后保留

  • 我正在将.csv导入Mysql,如下所示: …引发以下错误: "对于第63行的“注释”列,数据太长" 我看着第63行。csv,而“评论”的长度为115。 create语句似乎没问题(带有): 在将其标记为副本之前,请注意: 这个StackOverflow解决方案显然不适合:我已经将< code >字符集utf8添加到< code>LOAD DATA sql中。 另一个StackOverflow解决

  • 问题内容: 我有一个,当以编程方式填充单词时,该行不会正确换行。 电流输出: 这是正在发生的事情: 预期产量: 我要这个: Java: XML: 问题答案: 首先,您可以使用绘制油漆,然后每次添加一个新单词(嗨,我,我等),调用油漆。如果结果长度大于TextView的可用宽度,请在新单词之前添加一个。重置数据并重复步骤。