我在我的应用程序中使用hsqldb版本2.2.5有时我得到org.hsqldb.HsqlException:数据异常:字符串数据,右截断.所以我想知道是什么原因可能的原因.我没有插入任何数据,如varchar列中的longvarchar.
http://sourceforge.net/tracker/index.php?func=detail&aid=2993445&group_id=23316&atid=378131
我在上面的链接搜索但无法得到适当的反馈.
提前致谢.
在异常堆栈下面给出此异常不经常发生.
那么可能是什么原因以及如何在脚本文件中设置数据类型长度以在运行时增加?
java.sql.SQLException: data exception: string data, right truncation
at org.hsqldb.jdbc.Util.sqlException(Util.java:255)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(JDBCPreparedStatement.java:4659)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(JDBCPreparedStatement.java:311)
at com.dikshatech.agent.db.NodesRuntimeTable.persistData(NodesRuntimeTable.java:151)
at com.dikshatech.agent.jobs.WorkFlowJob.execute(WorkFlowJob.java:108)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation
at org.hsqldb.error.Error.error(Error.java:134)
at org.hsqldb.error.Error.error(Error.java:104)
at org.hsqldb.types.CharacterType.castOrConvertToType(CharacterType.java:523)
at org.hsqldb.types.CharacterType.convertToType(CharacterType.java:638)
at org.hsqldb.StatementDML.getInsertData(StatementDML.java:921)
at org.hsqldb.StatementInsert.getResult(StatementInsert.java:124)
at org.hsqldb.StatementDMQL.execute(StatementDMQL.java:190)
at org.hsqldb.Session.executeCompiledStatement(Session.java:1344)
at org.hsqldb.Session.execute(Session.java:997)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(JDBCPreparedStatement.java:4651)
Run Code Online (Sandbox Code Playgroud)
fre*_*edt 19
VARCHAR列的最大大小是用户定义的.如果插入的数据大于此值,则抛出异常.下面的示例定义了一个带有VARCHAR(100)列的表,该列将大小限制为100个字符.
CREATE TABLE T (ID INT, DATA VARCHAR(100))
Run Code Online (Sandbox Code Playgroud)
您可以使用数据库管理器并执行SCRIPT命令来查看所有表定义及其列大小.或者,SELECT * FROM INFORMATION_SCHEMA.COLUMNS显示每列的特征.
您可以使用它ALTER TABLE table_name ALTER COLUMN col_name SET DATA TYPE来增加现有列的大小.
对于通过String类型的字段上的@Column注释自动生成的Hibernate / HSQLDB模式,@Entity您可能需要提供lengthatrribute。否则,长度默认为255,长输入不适合:
@Lob
@Column(name="column_name", length = 1000)
private String description;
Run Code Online (Sandbox Code Playgroud)
你的场长不够大.我使用LONGVARCHAR数据类型来修复此错误.
CREATE TABLE"DEMO_TABLE"("ID"号码(19,0),"MESSAGE"LONGVARCHAR);
警告:Rant跟随......
是的,java.sql.SQLException: data exception: string data, right truncation...只有在你知道错误之后,错误信息才会有意义.偶尔我会找到一个清晰,写得很好的错误消息,旨在通知用户.写一个的时间将返回100倍(或更多取决于使用情况),但通常是其他人.因此,大多数人花费时间的动机太少了.然而,它可以回来使产品受益,就像Spring框架一样,它通常具有优异的错误信息.
我敢肯定stackoverflow.com不介意.糟糕的错误消息可能会在每天的每一分钟驱动人们!
| 归档时间: |
|
| 查看次数: |
44246 次 |
| 最近记录: |