DB2 SQLCODE:-302 SQLSTATE:22001插入行时替换换行符

时间:2017-07-26 04:22:23

标签: jdbc db2

我遇到了一个问题,即尝试插入替换新行字符的行时发生错误。

环境

操作系统:AIX 7
DBMS:DB2
JDBC驱动程序的版本:db2jcc4-10.5.4
编码:UTF-8(DBMS和应用程序)

问题

我有一张桌子," TBA"它有一个列," CONTENT",VARCHAR(600)。

当我尝试使用简单的插入查询向表中插入行时,它会抛出SQLException,SQLCODE:-302 SQLSTATE:22001 ...,即使内容值的长度未达到限制,600字节。我尝试了几次不同的值,我知道允许插入的限制字节是 254

插入查询如下:

INSERT INTO TBA (CONTENT) value (REPLACE(REPLACE(?, '\\n', chr(10)), '\\t', chr(09)))

与要插入的值一起使用的替换功能是必需的,因为允许客户端插入换行符并从他们尝试插入的内容值中点击字符,并且内容将显示在浏览器屏幕上的警报消息中,使用javascript

并且客户端层的操作只是提交带有textbox元素的POST请求,如下所示:

<form action="..." method="POST" name="..">
    <input type="text" name="content"/>
</form>

以下是通过执行插入查询并使用长度超过300个字节的内容值编写的查询日志。 (该值被省略。)没有问题。我尝试复制粘贴并在DBMS工具(如TOAD和SQL Gate)上执行它然后它工作正常,没有sql错误。

INSERT INTO TBA (CONTENT) value (REPLACE(REPLACE('01234567890...', '\\n', chr(10)), '\\t', chr(09)))

我终于尝试删除查询中的replace函数并以客户端(浏览器)-server方式执行它,然后我就可以正常工作了。

我错过了什么?替换函数可以延长值的长度?但为什么只有在客户端(浏览器)-server方式执行时才会发生?

请告诉我。

0 个答案:

没有答案