【问题标题】:HSQLDB auto truncateHSQLDB 自动截断
【发布时间】:2012-08-14 11:20:34
【问题描述】:

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

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

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)

gora 是因为我用的是 nutch。

谢谢

编辑1:

触发器是: CREATE TRIGGER typeconversionUpdate BEFORE UPDATE ON WEBPAGE 将新引用为新行 FOR EACH ROW SET newrow.TEXT=''

还有create语句:

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)

【问题讨论】:

  • 请包含您尝试过的 CREATE TABLE 和 CREATE TRIGGER 语句。

标签: sql hsqldb


【解决方案1】:

一种可能的解决方案是增加相关列的最大大小:

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

触发器解决方案不能与 2.2.9 及以下版本的 HSQLDB 一起使用,但可能在下一版本中允许使用。

【讨论】:

  • 好的,我会等待下一个版本。同时,在插入之前,我已经在 java 代码中对结果进行了整理。我不想更改 varchar 长度,因为字符串可能非常大,例如一个完整的 html 页面,但我只需要一些第一个字符。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多