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

对于长度为100000的类型字符变化(255),值太长

冯浩旷
2023-03-14

我使用的是Spring Data JPA,我的列定义是

@Column(length = 100000)
private String description;

在有效负载中,我使用了具有字符计数20000的描述。但它仍然在扔

错误:值太长,无法更改类型字符(255)`

仅使用长度为1990的文本,即使对于文本类型也会出现相同的错误

   2021-08-23 17:48:24.727  WARN 21044 --- [nio-8089-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 22001
   2021-08-23 17:48:24.727 ERROR 21044 --- [nio-8089-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: value too long for type character varying(255)
   2021-08-23 17:48:24.733 ERROR 21044 --- [nio-8089-exec-3] org.hibernate.AssertionFailure           : HHH000099: an assertion failure occurred

共有2个答案

卢开济
2023-03-14

问题出在数据库上,因为据我所知,PostgreSQL db中的varchar列接受255个字符,将字符可变或字符列改为文本列类型(由于Postgres 9.2,有时最初不使用文本)

ALTER TABLEyour_tableALTER列描述TYPE text;

阙阳夏
2023-03-14

当然,您的java代码运行一个sql语句,其中varchar(255)列被超过255长度的字符串过度更新。

  • 也许您可以使用Hibernate Envers
  • 表上可能有一些触发功能
  • 可能您连接了其他db
  • 也许其他人

首先用值记录sql语句。

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

https://www.baeldung.com/sql-logging-spring-boot

您可以对数据库运行sql语句。

  • 如果工作比你连接其他数据库
  • 如果没有,那么您可以在db端解决问题。
 类似资料:
  • 我有一个Alfresco(5.2.4)工作流,它在activiti引擎上运行。当用户提交任务并且用户任务块完成时,我收到以下错误: 到目前为止,我发现activiti自动存储在工作流中执行的“步骤”的历史记录,因此它会引发错误。 我想知道是否有一些数据库表定义,我可以寻找搜索超过255个字符总数的列。 如果我不能在用户完成任务时修改javascript代码,有没有办法增加长度? 谢啦 附注:我找到

  • 目标是使用hibernate将json文本保存到数据库中。 <代码>用户。java books.java:

  • 我有一个spring data jpa应用程序,它使用H2进行存储。当我尝试将一些数据解析到表中时,我得到一个错误: 我有一个表定义为: 我的@Entity类为: 这是令人反感的记录,它显然小到足以容纳该列: 我所能想到的是分号或其他一些无效字符正在引发此异常。 有人能看到这里的问题,并提出处理它的替代方案吗?

  • 问题内容: 我正在运行以下查询。但是得到ORA-12899。试图插入的字符串的总长度为30。 问题答案: 您会看到字符和字节长度语义之间的区别: 您必须为VARCHAR2列指定最大长度。尽管允许存储的实际字符串为零长度字符串(’‘),但该最大值必须至少为1个字节。您可以使用CHAR限定符,例如VARCHAR2(10 CHAR),以字符(而不是字节)为单位提供最大长度。从技术上讲,字符是数据库字符集

  • 问题内容: 我将数据库转移到MS SQL Server 2008 R2,当我尝试保存长字符串时,它给了我最大长度错误,而我将它替换后将该列的数据类型设置为“文本”与“ varchar(max)”,但那里没有解决方案。 请为我提供一个解决此问题的解决方案。我正在执行以下查询: 我进行了很多搜索,但是找到的解决方案对我没有用。 谢谢! 问题答案: 根据ANSI SQL标准,对象标识符(例如,而不是字符

  • 谢谢你的时间。 我试图将Arduino IDE的serialEvent()中从串行端口读取的“字符串”转换为具有精确表示的整数值。 例如,如果字符串myString=200,那么int myInt应该是200。 我已经有点成功,但无法将字符串转换为超过255的精确int表示。 我尝试过的解决方案: 1) 用过。Arduino中的toInt()函数。 2) 使用了“atoi”和“atol”函数。 3