|
Не находится запись, которая точно есть в БД
|
|||
---|---|---|---|
#18+
Столкнулся со странной проблемой. Есть самописный скрипт-демон, который обеспечивает синхронизацию данных между разными ИС. В контексте моей проблемы алгоритм следующий: 1. При первом запуске скрипт считывает из БД перечень оборудования: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Результат хранится в ассоциированном массиве (в кеше): Код: php 1. 2. 3. 4. 5. 6. 7.
_CLOCK будет использоваться, чтобы ограничить срок действия кеша. 2. Затем в процессе работы скрипт получает информацию об оборудовании по его IP-адресу: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Устройство ищется в кеше, если оно найдено и срок действия кеша не истек, то используются данные из кеша. В ином случае устройство ищется в БД: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Если находится — добавляется в кеш с новой временной отметкой. Если не находится, то выдает соответствующую ошибку. Проблема в том, что устройство никогда не находится, в $tmp возвращается пустой набор данных. Хотя если выполнить этот же запрос с таким же входным параметром, то устройство находится. Не могу понять, почему так происходит. Код $us->query довольно громоздкий, но в нем происходит создание ресурса, загрузка из него данных и освобождение (закрытие) ресурса. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 11:11 |
|
Не находится запись, которая точно есть в БД
|
|||
---|---|---|---|
#18+
Alibek B. что устройство никогда не находится, ... Хотя если выполнить этот же запрос с таким же входным параметром, то устройство находится. Наиболее вероятно, что входной параметр при программном и ручном выполнении ни разу не "такой же". А глаз замылился и не видит какой-то мелочи. Попробуй сделать вот так: Код: sql 1.
и сразу по выполнении запроса, пусть и с пустым результатом, посмотреть, что вернёт Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 12:05 |
|
Не находится запись, которая точно есть в БД
|
|||
---|---|---|---|
#18+
Akina Наиболее вероятно, что входной параметр при программном и ручном выполнении ни разу не "такой же" Да нет, я добавлял в отладочный вывод текст SQL-запроса и значения параметров и проверял именно с ними. Akina Попробуй сделать вот так: Спасибо, попробую. А что это должно дать? Сделать прямо в теле скрипта? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 12:11 |
|
Не находится запись, которая точно есть в БД
|
|||
---|---|---|---|
#18+
Alibek B. А что это должно дать? Это запишет переданный критерий в переменную, и ты на неё попристальнее сможешь посмотреть. Именно в выполняемом запросе, не "я собираюсь подставить", а "я подставил". Впрочем, то же можно и в General Log глянуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 12:19 |
|
|
start [/forum/topic.php?fid=47&msg=40105104&tid=1827910]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 528ms |
0 / 0 |