ORA-12899: value too large for column

180
25 сентября 2017, 00:24

Здравствуйте! Имеется файл, с которого считываются данные и они же добавляются в БД Oracle.

Проблема на примере:

— Поле VARCHAR2, размером 3 байта

— Пытаемся вставить туда 'абв' и тут же ловим exception: value too large for column (actual: 6, maximum: 3)"

Т.Е. каждый символ кодируется двумя байтами. Окей, подумал я, сейчас перекодируем. В БД стоит кодировка AL32UTF8. Кодировка файла - CP866.

Попытка безуспешной перекодировки:

Encoding srcEncodingFormat = Encoding.GetEncoding(866);
Encoding dstEncodingFormat = Encoding.UTF8;
byte[] originalByteString = srcEncodingFormat.GetBytes(s);
byte[] convertedByteString = Encoding.Convert(srcEncodingFormat,
dstEncodingFormat, originalByteString);
s = dstEncodingFormat.GetString(convertedByteString);

Изменять тип колонок нельзя. Каким образом можно решить эту проблему? Возможно ли как-то явно указать кодировку добавляемого значения при вставке данных в БД?

READ ALSO
Настройка конфигурации моделей Entity Framework

Настройка конфигурации моделей Entity Framework

Есть таблицы: Products, Tags и связывающая их ProductTags

193
Остановить AJAX запрос

Остановить AJAX запрос

Как правильно остановить данный скрипт выполнения на определенном месте, кликая на кнопку

257
Vue.js component render и axios

Vue.js component render и axios

К примеру есть компонент

391