在我的表product
中,我有一列:product_name
,其类型为VARCHAR
,大小为100:product_name varchar(100)
当我尝试插入一个包含如下特殊字符的名称时:
°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%°°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°
我收到此错误:
ERROR : org.hibernate.util.JDBCExceptionReporter:78 : logExceptions() : Error for batch element #1: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.57.82
我的product_name列可以有100个字符,对于我来说'是1个字符。
在DB2中是否有另一种类型(varchar
除外),为product_name
列设置它?
因此我可以执行此查询:
alter table product alter column product_name set data type otherType(100);
答案 0 :(得分:1)
查看
STRING_UNITS
数据库配置参数。您可以使用它将默认字节长度切换为字符长度。这意味着char(100)将由DB2默认解释为100字节。由于unicode数据库中的字符可以跨越1-4个字节,因此100个字节不足以存储100个字符。切换到STRING_UNITS = CODEUNITS32后,在定义列varchar(100)时会得到100个字符。 所以你不需要另一种类型,而是另一种db cfg设置。