Патчи обновления базы данных в 2.4.0 автоматически конвертируют существующие триггеры и вычисляемые элементы данных, чтобы использовался новый синтаксис.
Тем не менее, эти патчи имели проблему, в частности в макросе низкоуровневого обнаружения символ заменялся "#" на "<>". Таким образом, {#MACRO}
макрос мог быть заменен на {<>MACRO}
.
Такая проблема коснулась только тех макросы, которые были независимой частью выражения, а не частью ключа. Например, выражение {host:snmp.oid[{#SNMPINDEX}].last()} # {#SNMPVALUE}
могло быть преобразовано в {host:snmp.oid[{#SNMPINDEX}].last()} <> {<>SNMPVALUE}
.
В 2.4.1, патчи обновления базы данных исправлены, таким образом обновление с 2.2 на 2.4.1 должно пройти без ошибок. Тем не менее, патчи не исправляют выражения, которые уже были испорчены обновлением с 2.2 на 2.4.0.
Если вы желаете исправить такие поломанные выражения, вы можете начать с поиска какие выражения были повреждены, используя следующие запросы:
select triggerid, expression from triggers where expression like '%{<>%';
select itemid, key_, params from items where type=15 and params like '%{<>%';
Далее вам необходимо заменить в этих выражениях "{<>" на "{#".