|
|
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Наблюдал на системе клиента сбой влива данных при внешней интеграции, решили быстро костылем, поэтому не помню всех подробностей, но случай заинтересовал. Итак, БД Oracle, версия вроде бы 11g. Не исполнялся SQL-запрос вида: Код: plsql 1. Поле MY_TABLE.DSC описано как: varchar2(4000 CHAR) Сам текст точно меньше 4 тысяч символов (проверяли в Notepad++), спец. символов типа перевода строк мало. Но Oracle выдавал ошибку при апдейте - к сожалению, не помню какую. Если сделать так: Код: plsql 1. и прибиндить параметр такую же строку - тоже ошибка, но с другим кодом. На локальной базе своей попробовал - у меня все корректно работало. Текст в результате чуть обрезали и вставили ручками. Но меня все одолевает вопрос - что это могло быть? Какие то специфические настройки Oracle сервера? Не могу докопаться до истины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 00:22 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
PtNt, https://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm#i287903 VARCHAR2 Maximum size: 4000 bytes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 00:28 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
PtNtOracle выдавал ошибку при апдейте - к сожалению, не помню какую. Если сделать так ... ... - тоже ошибка, но с другим кодом. Но меня все одолевает вопрос - что это могло быть? Какие то специфические настройки Oracle сервера? Не могу докопаться до истины. «Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит» З.Ы. Без точного текста ошибок установить, что пошло не так - будет крайне затруднительно. Можно придумать тысячу и одну версий, но все они будут на уровне догадок ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 07:20 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Щукина АннаБез точного текста ошибок установить, что пошло не так - будет крайне затруднительно. Можно придумать тысячу и одну версий, но все они будут на уровне догадок ...Странно такое слышать. Наверно поговорить просто хочется? Причина очевидна. И miksoft на неё указал. А ТС уже даже не в начале 21-ого века по-прежнему считает, что кругом может быть только однобайт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 07:32 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Elic, Смущает, что две разных ошибки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:01 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Щукина АннаСмущает, что две разных ошибки...По-твоему, клиент, не имея технической возможности донести перезначение до сервера, должен падать с серверной ошибкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:07 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Elic, это по твоему. По-моему - ТС ничего не говорил о путях доставки запроса в базу. Уж, как минимум, из его описания не следует явно, что оба апдейта пришли в базу разным путем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:15 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Щукина АннаПо-моему - ТС ничего не говорил о путях доставки запроса в базу.Да ну? PtNtи прибиндить параметр такую же строку - тоже ошибка, но с другим кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:17 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Щукина АннаСмущает, что две разных ошибки...Не две. На ограничение длины ошибок больше. В данном случае одно ограничение на литерал и другое на устанавливаемое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:19 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Elic, и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:20 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
-2-, но никаких других ошибок, кроме неверной длины литерала, или неверной длина вставляемого в поле таблицы значения, конечно же, произойти не могло? тогда ок - убедили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:23 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Щукина Аннано никаких других ошибок, кроме неверной длины литерала, или неверной длина вставляемого в поле таблицы значения, конечно же, произойти не могло?Про литерал очевидно. Про другие ошибки, зависит от... Биндинг может выдать ошибку размера буфера. Апдейт может вызвать триггер, констрейнт, вычисляемое поле и т.п. с другими ошибками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 08:48 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Насчёт оракла точно не скажу, но в одно БД встречал ситуацию, когда в зависимости от кодировки, один символ занимал места как два. Проверьте: начиная со скольки символов перестаёт нормально работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 15:12 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Александр Бердышеввстречал ситуацию, когда в зависимости от кодировки, один символ занимал места как два. Маловато будет :) К примеру, в UTF8 символ может занимать от 1 до 6 байт. Чтите unicode.org до просветления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 15:28 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
Александр Бердышевкогда в зависимости от кодировки, один символ занимал места как два.Технически грамотный специалист сказал бы два байта. Александр Бердышевначиная со скольки символов перестаёт нормально работать.Когда lengthb становится больше 4000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 15:29 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
miksoftPtNt, https://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm#i287903 VARCHAR2 Maximum size: 4000 bytes вот это да... Забыл совсем, а ведь когда то знал )) Непонятно только тогда зачем Oracle разрешает в таблицах создавать поля varchar2 (4000 CHAR), он же четко понимает, что больше 2000 символов точно никак не влезет при любой кодировке... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 17:35 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
PtNtНепонятно только тогда зачем Oracle разрешает в таблицах создавать поля varchar2 (4000 CHAR), он же четко понимает, что больше 2000 символов точно никак не влезет при любой кодировке... :( в смысле, не влезет 4000 символов при текущей кодировке 2 байта на символ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 17:40 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
он же четко понимает, что больше 2000 символов точно никак не влезет при любой кодировке... Откройте для себя однобайтовые кодировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 17:40 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
PtNtкодировке 2 байта на символ. Когда-то люди старались , придумывали кодировки с переменным числом байтов на символ. Ибо сказано было "640К хватит всем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 17:47 |
|
||
|
Не дает сохранить < 4к символов в поле varchar2(4000 CHAR)
|
|||
|---|---|---|---|
|
#18+
PtNtзачем Oracle разрешает в таблицах создавать поля varchar2 (4000 CHAR), он же четко понимает, что больше 2000 символов точно никак не влезет при любой кодировке1. al32utf8 влезет от 1000 до 4000 символов, причем 4 байта могут занимать и русские буквы кириллицы. Например, Й может быть представлена как 2 байта и как 4 байта 2. Данные либо не ограничиваются, полагаясь на заведомо "большой" размер 4000 байт, либо ограничиваются более скромными значениями. Для неограниченных типов придпочитаю писать byte. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2019, 19:10 |
|
||
|
|

start [/forum/search_topic.php?author=Serginio1&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 681ms |
| total: | 900ms |

| 0 / 0 |
