Ad Widget

Collapse

[Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR:

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Denis_1982
    Junior Member
    • Jan 2025
    • 2

    #1

    [Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR:

    Добрейшего дня! Zabbix 7.0.17

    В логах Zabbix Server постоянно сыпет следующие ошибки

    Code:
    2369175:20251019:131836.456 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
    [insert into trends_uint (itemid,clock,num,value_min,value_avg,value_max) values (32755178,1760864400,2,11487,11487,11487),(3277533 8,1760864400,2,21023,21023,21023),(33503254,176086 4400,2,1,1,1),(33872134,1760864400,2,2,2,2),(34437 619,1760864400,3,99,99,99),(34437620,1760864400,3, 0,0,0),(38737234,1760864400,4,1,1,1),(38739514,176 0864400,4,1,1,1),(38745214,1760864400,3,1,1,1),(38 746474,1760864400,3,1,1,1),(38750914,1760864400,3, 1,1,1),(38806954,1760864400,3,1,1,1),(39160114,176 0864400,3,1,1,1),(39201334,1760864400,3,1,1,1),(40 034314,1760864400,2,1209344,1308160,1406976),(4004 5474,1760864400,1,3975168,3975168,3975168),(401384 74,1760864400,2,0,0,0) on conflict (itemid,clock) do update set num=EXCLUDED.num,value_min=EXCLUDED.value_min,valu e_avg=EXCLUDED.value_avg,value_max=EXCLUDED.value_ max;
    ]
    Правильно ли я понимаю, что оно хочет, чтобы у таблицы trends_uint было 2 индекса по полям itemid и clock?

    Сейчас структура таблицы выглядит вот так:

    Code:
    SELECT indexname FROM pg_indexes WHERE tablename = 'trends_uint';
    trends_uint_clock_idx
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Ожидаемую структуру базы данных можно посмотреть в файле "schema.sql" для соответствующей базы данных.
    Например, скачав исходники (ссылка), для PostgreSQL можно найти файл "database/postgresql/schema.sql", где для создания таблицы trends_uint предлагается использовать такую конструкцию:

    Code:
    CREATE TABLE trends_uint (
        itemid                   bigint                                    NOT NULL,
        clock                    integer         DEFAULT '0'               NOT NULL,
        num                      integer         DEFAULT '0'               NOT NULL,
        value_min                numeric(20)     DEFAULT '0'               NOT NULL,
        value_avg                numeric(20)     DEFAULT '0'               NOT NULL,
        value_max                numeric(20)     DEFAULT '0'               NOT NULL,
        PRIMARY KEY (itemid,clock)
    );
    Здесь указан primary key, по которому должен автоматически создаваться соответствующий индекс.
    Та же конструкция "(itemid,clock)" используется в процитированном вами операторе "insert" (в предложении "on conflict", ссылка).

    Я не сильно большой специалист в области баз данных, но мне кажется, что имеет смысл проверить структуру своей базы - как минимум, есть ли для данной таблицы нужные primary key и соответствующий индекс.
    У меня, кстати, ваш SELECT возвращает немного другой результат:
    Code:
    trends_uint_pkey
    Last edited by Kos; 20-10-2025, 09:13.

    Comment

    • Denis_1982
      Junior Member
      • Jan 2025
      • 2

      #3
      Спасибо большое! То есть скорее всего нарушена структура БД. Будем в этом направлении двигаться.

      Comment

      Working...