Неверный токен - недопустимый запрос BLR по смещению 340, функция F_LRTRIM не определена - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь синхронизировать две базы данных Firebird друг с другом. Прежде всего, я уже настроил, что синхронизация будет односторонней. Таким образом, одна база данных является исходной БД, а другая - целевой БД.

Для запуска синхронизации я использую IBReplicator! Когда я запускаю синхронизацию, я получаю сообщение об ошибке:

Exception: Invalid token
invalid request BLR at offset 340
function F_LRTRIM is not defined 
module name or entrypoint could not be found

Я начал искать причину проблемы. Что я уже проверил:

  • .dll файлы существуют в каталоге firebird
  • 32-битная версия Firebird
  • IBExpert отображает UDF в разделе UDF базы данных.

Я прочитал, что это может быть проблемой, если существует несоответствие между версией Firebird Server и версией DLL-файла. Но я не знаю, как проверить версии.

И я хотел найти файл .conf, чтобы проверить путь к файлу UDF (.dll), но не нашел его. Я нашел только файл firebird.conf и уже установил для UDFAccess значение Full.

Буду очень признателен, если кто-нибудь сможет мне помочь. Я потратил огромное количество времени на эту проблему.

1 Ответ

0 голосов
/ 28 августа 2018

Ошибка означает, что Firebird не может найти точку входа или библиотеку при выполнении функции. Это означает, что

  1. Библиотека не найдена: она не находится по пути (библиотеки) или в одной из папок, перечисленных в конфигурации UdfAccess
  2. Библиотека была найдена, но она 32-разрядная, и вы используете 64-разрядную версию (или ее 64-разрядную версию и 32-разрядную версию)
  3. Библиотека была найдена, но не имеет точки входа для UDF.

Ваша проблема, кажется, первая, и решение состоит в том, чтобы добавить расположение UDF в конфигурацию UdfAccess. Учитывая комментарии, вы должны использовать

UdfAccess = Restrict UDF

Который разрешит только библиотеки UDF из каталога UDF вашей установки Firebird. При необходимости вы можете перечислить несколько каталогов, разделенных ;.

Вы никогда не должны использовать UdfAccess = Full, это небезопасно, поскольку его можно использовать для компрометации вашей системы с любой библиотекой на пути (библиотеки) вашей системы.

...