powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кодировка запроса INSERT, ORA-12899
8 сообщений из 8, страница 1 из 1
Кодировка запроса INSERT, ORA-12899
    #39525400
MrLebovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется клиентское приложение, которое парсит текстовый файл в кодировке CP866 и пытается вставить данные в Oracle.
Возникает проблема с кодировкой. Все данные кириллица и вроде бы 1 символ должен быть = 1 байту.

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

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

— Пытаемся вставить туда 'абвгд' и тут же ловим exception: ORA-12899: value too large for columnvalue too large for column (actual: 10, maximum: 5)"

Т.Е. каждый символ кодируется двумя байтами. В БД стоит кодировка AL32UTF8. Изменить тип колонок на VARCHAR2(5 CHAR) нельзя (производственная БД).

Умные люди подсказали, что в памяти приложения под .NET текстовые данные всегда хранятся в кодировке UTF16 и строка запроса, соответственно имеет эту кодировку, что приводит к ошибке.
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525403
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте по теме "oracle NLS parameters", выясняйте, какие параметры использует ваше приложение.
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525411
банально
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrLebovskyнельзяну нельзя, значит ORA-12899 соответствует производственным целям.
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525418
MrLebovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

т.е. при использовании одинаковых параметров NLS клиентским приложением и БД такие проблемы не возникнут?
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525431
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не одинаковые у сервер и клиента, они разные могут быть, а соответствие клиентской кодировки данным, которые клиент пуляет в БД.
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525463
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrLebovskyт.е. при использовании одинаковых параметров NLS клиентским приложением и БД такие
проблемы не возникнут?

Такие - нет. Проблемы при этом будут гораздо худшие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525489
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrLebovskyВсе данные кириллица и вроде бы 1 символ должен быть = 1 байту. https://docs.oracle.com/database/121/NLSPG/ch2charset.htm#NLSPG171 Figure 2-2 shows the number of bytes needed to store different kinds of characters in the UTF-8 character set. The ASCII character requires one byte, the non-ASCII Latin, Greek, Cyrillic, Arabic, and Hebrew characters require two bytes
...
Рейтинг: 0 / 0
Кодировка запроса INSERT, ORA-12899
    #39525590
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrLebovskyВсе данные кириллица и вроде бы 1 символ должен быть = 1 байту.
MrLebovsky В БД стоит кодировка AL32UTF8.
MrLebovskyУмные люди подсказали, что в памяти приложения под .NET текстовые данные всегда хранятся в кодировке UTF16 и строка запроса, соответственно имеет эту кодировку, что приводит к ошибке.
Ну как все это может вместе возникнуть в мозгу и не вызвать диссонанс?
=(
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кодировка запроса INSERT, ORA-12899
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]