У меня есть таблица с varchar2 колонку (4000), где я получил проблему вставки данных, таким образом, что:оракула VARCHAR макс ниже, чем указано
ORA-12899: value too large for column "XXX"."YYY"."ZZZ" (actual: 2132, maximum: 2048)
При запуске
select * from user_tab_columns where table_name = 'YYY'
I может видеть столбец CHAR_LENGTH размером 2048, но кроме этого у меня нет следов, почему он упрется сам?
CHARACTER_SET_NAME - CHAR_CS, но контент в основном кодируется base64. Любые подсказки, как преодолеть эту проблему?
С уважением
Update:
Вот полные 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 ..
Update: удалось получить начальную DDL
CREATE TABLE "XXX", "YYY"
(
...
"ZZZ" VARCHAR2 (2048 CHAR)
...
)
Но я до сих пор понятия не имею, как настроить эту цифру? Помогла бы с простой таблицей alter и установила varchar2 (3192 CHAR)?
Почему вы думаете, что это 'varchar2 (4000)' - поддерживает ли тип данных и длину данных из 'user_tab_columns'? Можете ли вы опубликовать команду создания таблицы (желательно из 'dbms_metadata.get_ddl', если она не была построена так, как вы думаете)? –
from user_tab_columns .. –
См. Обновление выше. Не знаю, как добраться до dbms_metadata.get_ddl, поэтому можно только предположить, что это был оригинальный sql, который был базовым: ZZZ VARCHAR2 (4000) –