Ad Widget

Collapse

Не работает логин. Ошибка SQL запроса (...WHERE ug.userid='')

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Yos
    Junior Member
    • Jun 2019
    • 6

    #1

    Не работает логин. Ошибка SQL запроса (...WHERE ug.userid='')

    Здравствуйте!

    Есть настроенный zabbix-server, использовались образы:
    • zabbix/zabbix-server-pgsql:5.4.8-alpine
    • zabbix/zabbix-web-nginx-pgsql:5.4.8-alpine
    • postgres:13-alpine

    Настраивал LDAP авторизацию. Тестировал, и в какой-то момент заметил что логин больше не работает, просто белая страница. В логах PostgreSQL начали сыпаться следующие ошибки, при попытке открыть новую логин страницу:
    Code:
    ERROR: invalid input syntax for type bigint: "" at character 65
    STATEMENT: SELECT g.usrgrpid FROM usrgrp g,users_groups ug WHERE ug.userid='' AND g.usrgrpid=ug.usrgrpid AND g.users_status=1 LIMIT
    Ругается именно на WHERE ug.userid='' где userid это int8 и NOT NULL, что логично приводит к ошибке в запросе.
    На оставшейся сессии в браузере откатил настройки что делал, но не помогло. Попробовал таблицу config заменить такой же с чистого заббикса - не помогает.
    Есть идеи куда копнуть что потрогать? Уж сильно не хочется заново создавать и с нуля новый заббикс настраивать(
  • Yos
    Junior Member
    • Jun 2019
    • 6

    #2
    Не зря не мог уснуть, мучался, и решил дальше копать... Решилось
    Включаем логирование SQL запросов, и видем что до запроса:
    Code:
    SELECT g.usrgrpid FROM usrgrp g,users_groups ug WHERE ug.userid='' AND g.usrgrpid=ug.usrgrpid AND g.users_status=1 LIMIT
    У нас есть запрос на получаение того самого userid:
    Code:
    SELECT userid FROM users WHERE username='guest'
    Но! В ответе получаем NULL, хотя если если сделать:
    Code:
    SELECT userid FROM users WHERE username ILIKE 'guest'
    Мы получим наш заветный правильный userid.
    По символам - все совпадает, копировал этот проблемный "guest" с выхлопа sql но не находило. Починилось прогонкой туда-сюда изменения самого "guset" поля:
    Code:
    UPDATE users SET username='guestYOBA' WHERE userid=2 ;
    UPDATE users SET username='guest' WHERE userid=2 ;
    После чего sql уже возвращал нужный мне userid

    Comment

    Working...