2012-08-14 67 views
1

是否可以在连接字符串中创建一个触发器或参数,该字符串在超过限制时截断varchar?HSQLDB自动截断

我试图创建触发器插入/更新之前,但我继续得到以下异常:

产生java.io.IOException:java.sql.BatchUpdateException:数据异常:字符串数据,右截断 在org.apache.gora.sql.store.SqlStore.flush(SqlStore.java:340) 在org.apache.gora.sql.store.SqlStore.close(SqlStore.java:185)

的山是因为我使用nutch。

感谢

EDIT1:

触发是: CREATE TRIGGER typeconversionUpdate BEFORE UPDATE对网页进行 REFERENCING NEW AS NEWROW FOR EACH ROW SET newrow.TEXT = ''

而创建声明:

CREATE TABLE WEBPAGE (id VARCHAR(512) PRIMARY KEY,headers BLOB,text VARCHAR(32000),status INTEGER,markers BLOB,parseStatus BLOB,modifiedTime BIGINT,score FLOAT,typ VARCHAR(32),baseUrl VARCHAR(512),content BLOB(65536),title VARCHAR(512),reprUrl VARCHAR(512),fetchInterval INTEGER,prevFetchTime BIGINT,inlinks BLOB,prevSignature BLOB,outlinks BLOB,fetchTime BIGINT,retriesSinceFetch INTEGER,protocolStatus BLOB,signature BLOB,metadata BLOB) 
+0

请包括您尝试的CREATE TABLE和CREATE TRIGGER语句。 – fredt 2012-08-14 12:19:18

+0

加入问题 – Hugo 2012-08-14 15:15:04

回答

1

一个可能的解决方案是在弄皱的列的最大尺寸在问题:

ALTER TABLE WEBPAGE ALTER COLUMN TEXT SET DATA TYPE VARCHAR(1000000) 

触发溶液不能与HSQLDB使用高达2.2.9版本,而是可以在下一版本被允许。

+0

好吧,我会等待下一个版本。 同时,我已经在插入之前将结果trucated在java代码中。我不想改变varchar长度,因为字符串可能非常大,例如完整的html页面,但我只需要一些第一个字符。 谢谢。 – Hugo 2012-08-15 14:31:38