У одного клиента на арендованном сервере в серверной базе появляется ошибка.
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка СУБД:
2201B: ERROR: invalid regular expression: invalid character range
Никак не могу понять с чем она связана и как ее устранить. Есть подозрение что база на Postgre, но как проверить не знаю. Кто-нибудь сталкивался с подобным?
2201B: ERROR: invalid regular expression: invalid character range
Никак не могу понять с чем она связана и как ее устранить. Есть подозрение что база на Postgre
была такая проблема на сервере 8.3.8.1747, если в справочнике Номенклатура в форме списка, в быстром поиске написать строку содержащую [ или ] или обе, то 1с крэшится:
Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
2201B: ERROR: invalid regular expression: invalid character range После обновления на 8.3.7.2027ошибка осталась, проблема была только под Postgres, в файловом варианте все норм.
(2) Я тоже гуглом нашел похожую тему, но это было давно. Сервер на котором ошибка появилась свежий 8.3.16 или 8.3.17. В одном запросе у меня есть ПОДОБНО % %, но это же не [ ]. В файловом понятно что не проявляется, там нет СУБД
Я тоже гуглом нашел похожую тему, но это было давно. Сервер на котором ошибка появилась свежий 8.3.16 или 8.3.17. В одном запросе у меня есть ПОДОБНО % %, но это же не [ ]. В файловом понятно что не проявляется, там нет СУБД
(9) у MS SQL и не такие были. Там была как-то проблема с предопределенным элементом, в котором был символ конца файла. На него ругались оба сервера, но постгрес по крайней мере сообщал, что это за проблема.
Суть проблемы в том, что regexp, который используется и MS SQL тоже, может ругаться на выражения типа ;[3-1]', в этом случае подразумевается, что символ "-" - это символ, а не указатель на диапазон, а диапазон всегда от меньшего к большему.
По самой проблеме - не совсем ясно, когда у клиента происходит такая ошибка.
(10) При чтении файла с данными происходит поиск номенклатуры для подстановки в документы. Я думаю именно в этот момент и происходит ошибка, т.к. только здесь используется запрос с ПОДОБНО.
Ну так просто все, получается. В "ПОДОБНО" есть синтаксис для символьного отбора - "[A-Z]", например, - это буквы. В итоге если у вас в наименовании номенклатуры будет что-то типа "[9-1]", то запрос будет вываливаться с ошибкой. Такие символы надо экранировать.
Ищет символ процента. Полный список символов для экранирования- '_', '%', '[', ']' с соответствующими заменами '[_]', '[%]', '[[]', '[]]' . Пример кода можно найти в Escaping the escape character does not work-SQL LIKE Operator
(19) А у них не чем валится? У меня вот тоже не получилось вопросизвести проблему. Отсюда простая мораль: запусти у клиента этот код и найди строку, на которой все падает.
(20) Мораль понятная, но с клиентом нужно был быстро и уже по-другому решили. Теперь доступа к нему нет. А на PostgreSQL есть возможность проверить? У меня пока нет готовой системы на Postgre.
Так же писал в тех.поддержку, где получил ответ:
"Добрый день!
Вообще, была подобная ошибка при запросе с конструкцией с квадратными скобками - и там разработчики дали ответ, что это "обязанность" Конфигурации - обеспечить корректное экранирование спец.символов с помощью СПЕЦСИМВОЛ."