|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
Приветствую. 21 марта на одном из слейвов произошла ошибка: SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8": 0xd0 Ошибка произошла при чтении файла русского словаря: CONTEXT: line 42756 of configuration file "/usr/share/postgresql/9.6/tsearch_data/russian.dict" при запросе в общем-то со словарем никак не связанным: UPDATE "item" SET "balance"=N, "price"=M, "updated_at"=D WHERE "id"=K. Потом ошибки не было несколько дней и теперь она появляется раз в день. При этом при нескольких десятков миллионов хитов в день на сайте, ошибка происходит только один раз. line в файле russian.dict, где произошла ошибка постоянно меняется, как и запрос. Файл russian.dict копируется из проекта в папку pg при деплое и после копирования выполняется команда ALTER TEXT SEARCH DICTIONARY russian_ispell (...). У меня была мысль, что эта команда выполняется во время выполнения какого-то запроса, что приводит к ошибке чтения файла словаря, но время ошибки не совпадает со временем деплоя. 0xd0 - это вроде как начало какого-то символа utf8, не до конца считанного, но почему-то тогда ошибка происходит при левых запросах, а не при ALTER TEXT SEARCH DICTIONARY, если есть проблемы с чтением файла словаря? pg 9.6 Куда копать, я пока ума не приложу. В интернете пишут про такую ошибку, но применительно к другим кодировкам и советуют выставить client_encoding, но у нас, конечно, уже выставлен utf8, да и ошибка происходит всего раз в день рандомно, а не на всех db-серверах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 07:21 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
gruender, просто символ скорее всего попался в строке Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 10:01 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
Alex__kK, 0xd0 - это начало какого-то символа: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024&number=128&names=2&utf8=0x В файле russian.dict у нас все символы в порядке, "битых" нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 11:31 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
gruender, не совсем понял, зачем вы словари все время теребонькаете. ведь после этого надо всё переиндексировать. или вы индексы не строите ? пс: словари как рассылаете ? по фтп ? как тексты или как бинарники ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 14:39 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
qwwq, Словарь (как и тезаурус, и прочее) может быть подвержен изменениям, поэтому его заливают на слейвы. Ну и новые слейвы могут быть добавлены, поэтому тоже нужно залить. Заливка происходит автоматически при процедуре деплоя на прод, копирование идет через scp. Индексы перестраиваются по мере необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 09:05 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
gruender, предположим, что ошибка возникает на неполностью переданном файле. передача раз в день ? табличка итемов индексирована ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 19:34 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
gruenderПриветствую. 21 марта на одном из слейвов произошла ошибка: SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8": 0xd0 Ошибка произошла при чтении файла русского словаря: CONTEXT: line 42756 of configuration file "/usr/share/postgresql/9.6/tsearch_data/russian.dict" при запросе в общем-то со словарем никак не связанным: UPDATE "item" SET "balance"=N, "price"=M, "updated_at"=D WHERE "id"=K. Потом ошибки не было несколько дней и теперь она появляется раз в день. При этом при нескольких десятков миллионов хитов в день на сайте, ошибка происходит только один раз. line в файле russian.dict, где произошла ошибка постоянно меняется, как и запрос. Файл russian.dict копируется из проекта в папку pg при деплое и после копирования выполняется команда ALTER TEXT SEARCH DICTIONARY russian_ispell (...). У меня была мысль, что эта команда выполняется во время выполнения какого-то запроса, что приводит к ошибке чтения файла словаря, но время ошибки не совпадает со временем деплоя. 0xd0 - это вроде как начало какого-то символа utf8, не до конца считанного, но почему-то тогда ошибка происходит при левых запросах, а не при ALTER TEXT SEARCH DICTIONARY, если есть проблемы с чтением файла словаря? pg 9.6 Куда копать, я пока ума не приложу. В интернете пишут про такую ошибку, но применительно к другим кодировкам и советуют выставить client_encoding, но у нас, конечно, уже выставлен utf8, да и ошибка происходит всего раз в день рандомно, а не на всех db-серверах. Словарь читается при первом к нему обращении в ЛЮБОМ новом процессе базы. Т.е. установили коннект новый к базе, когда этот самый файл russian.dict копируется но не докопировался - обратились к нему первый раз например из вышеупомянутого запроса где на Items скорее всего FTS индекс есть (в этом конкретном коннекте) - получили вышеописанную ошибку. Вы вообще где то читали в документации что эти файлы можно менять на запущенной базе? Так что появление ошибок зависит от фазы луны и тд (как совпадет время копирования и время первого обращения к словарю). Посоветовать могу только каждый раз dict под новым именем копировать чтобы не было ситуации когда база видит и пытается использовать неполный файл. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 01:58 |
|
SQLSTATE[22021]: Character not in repertoire: 7 ERROR: invalid byte sequence for encoding
|
|||
---|---|---|---|
#18+
qwwqgruender, предположим, что ошибка возникает на неполностью переданном файле. передача раз в день ? табличка итемов индексирована ? Передача один-два раза в день. Да, индексирована. Maxim Boguk Посоветовать могу только каждый раз dict под новым именем копировать чтобы не было ситуации когда база видит и пытается использовать неполный файл. Понял, спасибо, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 07:40 |
|
|
start [/forum/topic.php?fid=53&fpage=57&tid=1995860]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 134ms |
0 / 0 |