2012-08-14 69 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