我遇到了一个问题,即尝试插入替换新行字符的行时发生错误。
环境:
操作系统: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方式执行时才会发生?
请告诉我。