|
|
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
Имеется клиентское приложение, которое парсит текстовый файл в кодировке 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 и строка запроса, соответственно имеет эту кодировку, что приводит к ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 11:24 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
Читайте по теме "oracle NLS parameters", выясняйте, какие параметры использует ваше приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 12:09 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
MrLebovskyнельзяну нельзя, значит ORA-12899 соответствует производственным целям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 12:49 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
dmdmdm, т.е. при использовании одинаковых параметров NLS клиентским приложением и БД такие проблемы не возникнут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 13:16 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
Не одинаковые у сервер и клиента, они разные могут быть, а соответствие клиентской кодировки данным, которые клиент пуляет в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 14:50 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
MrLebovskyт.е. при использовании одинаковых параметров NLS клиентским приложением и БД такие проблемы не возникнут? Такие - нет. Проблемы при этом будут гораздо худшие. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 17:03 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 19:15 |
|
||
|
Кодировка запроса INSERT, ORA-12899
|
|||
|---|---|---|---|
|
#18+
MrLebovskyВсе данные кириллица и вроде бы 1 символ должен быть = 1 байту. MrLebovsky В БД стоит кодировка AL32UTF8. MrLebovskyУмные люди подсказали, что в памяти приложения под .NET текстовые данные всегда хранятся в кодировке UTF16 и строка запроса, соответственно имеет эту кодировку, что приводит к ошибке. Ну как все это может вместе возникнуть в мозгу и не вызвать диссонанс? =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2017, 09:40 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39525411&tid=1885213]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 429ms |

| 0 / 0 |
