我有一个包含 varchar2(4000) 列的表,在其中插入数据时遇到问题,例如:
ORA-12899: value too large for column "XXX"."YYY"."ZZZ" (actual: 2132, maximum: 2048)
当我跑
select * from user_tab_columns where table_name = 'YYY'
我可以看到一个大小为 2048 的 CHAR_LENGTH 列,但除此之外,我不知道为什么它会抢占自己?
CHARACTER_SET_NAME 是 CHAR_CS,但内容大多是 base64 编码的。任何线索如何克服这个问题?
问候
更新:
这是完整的 user_tab_columns,抱歉缩进。
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_TYPE_MOD DATA_TYPE_OWNER DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE COLUMN_ID DEFAULT_LENGTH DATA_DEFAULT NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE CHARACTER_SET_NAME CHAR_COL_DECL_LENGTH GLOBAL_STATS USER_STATS AVG_COL_LEN CHAR_LENGTH CHAR_USED V80_FMT_IMAGE DATA_UPGRADED HISTOGRAM
YYY ZZZ VARCHAR2 <null> <null> 4,000 <null> <null> Y 7 <null> <null> 15 41 42 43 44 45 46 47 4d 49 49 46 75 7a 43 43 42 4b 4f 67 41 77 49 42 41 67 49 45 54 41 4c 4d 68 6a 41 4e 42 67 6b 71 0.06667 662 1 2013-06-03 929 CHAR_CS 4,000 NO NO 1,394 2,048 C NO YES NONE
2048 标记来自 CHAR_LENGTH 列,CHAR_USED 为 C..
更新:设法获得初始 DDL
CREATE TABLE "XXX", "YYY"
(
...
"ZZZ" VARCHAR2 (2048 CHAR)
...
)
但我仍然不知道如何调整这个数字?对简单的更改表和设置 varchar2(3192 CHAR) 有帮助吗?