У меня возникла странная проблема с расширением php mysqli. На моей локальной установке LAMP все работает нормально.Проблемы с доступом к таблицам с mysqli
После тестирования моего сайта в конечной производственной среде я получаю странные ошибки.
Это отрывок из моего внутреннего сайта SQL логфайла:
[SUCCESS] SELECT * FROM `tbl1` ORDER BY `created` DESC LIMIT 20;
[ERROR] SELECT * FROM `tbl1` ORDER BY `created` DESC LIMIT 20;
(Table 'dbname.tbl1' doesn't exist)
[SUCCESS] SELECT * FROM `tbl1` ORDER BY `created` DESC LIMIT 20;
[SUCCESS] SELECT * FROM `tbl1` ORDER BY `created` DESC LIMIT 20;
Для целей тестирования, я выполнил тот же запрос, четыре раза в одной функции. Три раза в четыре раза запрос выполнился. Сбой запроса возвращает ошибку: Таблица «dbname.tbl1» не существует.
Эта проблема возникает всегда с разными таблицами и различными функциями. Иногда tbl1 отсутствует, после удара F5 tbl2, кажется, не хватает ...
Там, кажется, проблема с моими настройками сервера, так как запросы всегда работают в местной среде Dev, но только иногда в производственной среды.
Кто-нибудь знает, что может вызвать эту проблему?
Edit: Что я забыл упомянуть: При переходе к нормальному MySQL расширения PHP все отлично работает. Это действительно проблема с mysqli.
Действительно ли ваше имя базы данных «dbname»? У вас есть более одной базы данных? У вас есть функция/файл, который использует неправильное соединение с базой данных? Я думаю, ваш лучший снимок - выяснить, существует ли корреляция между ошибками и когда/где/почему запрос выполняется. – Nanne
Спасибо за ваш вклад. Моя база данных не называется _dbname_. Я просто попытался упростить описание проблемы здесь. Поскольку приложение использует один класс интерфейса db и конфигурацию db, я не думаю, что возможно, что есть какая-либо функция/файл с неправильным подключением db. Корреляции трудно найти, поскольку ошибки действительно кажутся совершенно случайными! – user276289
Я понял, что ваша база данных не называется _exactly_ dbname, я просто хотел знать, совпадает ли указанная строка «dbname» с именем вашей базы данных. Если ваша база данных называется 'dbnameA', и она говорит' dbnameB', это очевидная причина, почему таблица не может быть найдена :). Для подключения к базе данных: может ли быть где-то где-то висит тестовое соединение? – Nanne