Home » Мониторинг » Zabbix » Ошибка Zabbix - database is not upgraded to use double precision values

Ошибка Zabbix - database is not upgraded to use double precision values

Обновлял версию Zabbix Server с 4.4 до 5.0 на очередном сервере и столкнулся с ошибкой, которую раньше не замечал. Все делал по своей статье - обновление zabbix 4.4 -> 5.0. Для версии Centos 7 она полностью актуальна, сделал по ней простым копипастом. Но возникла проблема с базой. Рассказываю, как решить.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

После обновления в логах zabbix-server заметил ошибку:

database is not upgraded to use double precision values

database is not upgraded to use double precision values

А в web интерфейсе было сообщение:

Таблицы истории в базе данных обновлены Нет

или в английской версии:

Database history tables upgraded No

Ошибка быстро нагуглилась, но решение взял из двух мест. В каждом из них ошибка решалась только наполовину. В итоге вам надо сделать следующее. Останавливаем zabbix-server:

# systemctl stop zabbix-server

Добавляем в конфиг /etc/zabbix/web/zabbix.conf.php:

$DB['DOUBLE_IEEE754'] = 'true';

Дальше идем в консоль mysql, заходим в базу данных zabbix и делаем там некоторые изменения:

# mysql -uroot -p
> use zabbix;
> ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_avg DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_max DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
> ALTER TABLE history MODIFY value DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;

После этого запускаем zabbix-server. Ошибка в и логе, и в веб интерфейсе должна пропасть.

Также часто возникает ошибка с кодировкой базы данных, особенно если ставили сервер давно и последовательно его обновляли год от года. Раньше этого требования к кодировке не было. База данных и таблицы должны быть в кодировке utf8. Если у вас другая кодировка, получите ошибку - Неподдерживаемая кодовая страница. Как ее решать, смотрите по ссылке.

 

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

12 комментариев

  1. Сергей

    Может подскажите, что будет если не менять тип столбца?

  2. Все сделал - ничего не поменялось.
    Кроме того у меня еще пишет:
    MariaDB 5.05.05 Minimum required database version is 10.00.37.
    Хотя у меня версия 10.3.27

  3. Алексей

    Напишите статья про уведомления sms в ubuntu, раньше использовал centos, smstools и все отлично. В ubuntu smstools не работает как надо, gammu мозг мучает.

  4. Вячеслав

    Добрый день! не по теме совсем, но может кто то поможет?

    Есть такой шаблон в zabbix -Template Tel Asterisk by HTTP
    в общем вот такую ошибку выдает

    " Preprocessing failed for: HTTP/1.1 200 OK..Server: Asterisk..Date: Fri, 05 Mar 2021 15:53:03 GMT..Cache-Control: no-cache, ...
    1. Failed: Request failed with message Error. Check debug log for more information."

    куда только не копал ни грамму не продвинулся. Версия zabbix 5.0

  5. Владимир

    А для пользователей postgresql команда такая же? подскажите плиз!

  6. Отбой, решение помогло.
    Я почему-то добавил $DB['DOUBLE_IEEE754'] = 'true'; по пути /etc/zabbix/web/zabbix.conf.php :)

  7. Странно, сделал по аналогии, ошибка не пропала в web-интерфейсе (Database history tables upgraded - No).
    БД Zabbix не ругается на какое-либо не верное исполнение скрипта.
    В конфиг нужное значение ($DB['DOUBLE_IEEE754'] = 'true';) добавил, помимо службы zabbix-server, перезагрузил и сам сервер.

    MariaDB [(none)]> use zabbix;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    MariaDB [zabbix]> ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_avg DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_max DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    MariaDB [zabbix]> ALTER TABLE history MODIFY value DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

  8. Ошибка ушла. Спасибо. Правда, я не особо понимаю на что это всё влияет. Это получается поменяли точность каких-то значений?

    • Нет, дело не в точности. У каждого приложения свои требования к типу базы данных и ее кодировке в зависимости от типа хранимых значений. Так трудно сходу объяснить в комментариях. Можно просто загуглить тему кодировок базы данных и разобраться при желании.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar