2013-08-13 2 views
0

У меня возникла странная проблема с расширением 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.

+0

Действительно ли ваше имя базы данных «dbname»? У вас есть более одной базы данных? У вас есть функция/файл, который использует неправильное соединение с базой данных? Я думаю, ваш лучший снимок - выяснить, существует ли корреляция между ошибками и когда/где/почему запрос выполняется. – Nanne

+0

Спасибо за ваш вклад. Моя база данных не называется _dbname_. Я просто попытался упростить описание проблемы здесь. Поскольку приложение использует один класс интерфейса db и конфигурацию db, я не думаю, что возможно, что есть какая-либо функция/файл с неправильным подключением db. Корреляции трудно найти, поскольку ошибки действительно кажутся совершенно случайными! – user276289

+0

Я понял, что ваша база данных не называется _exactly_ dbname, я просто хотел знать, совпадает ли указанная строка «dbname» с именем вашей базы данных. Если ваша база данных называется 'dbnameA', и она говорит' dbnameB', это очевидная причина, почему таблица не может быть найдена :). Для подключения к базе данных: может ли быть где-то где-то висит тестовое соединение? – Nanne

ответ

1

Я решил проблему.

Что-то случилось с моей настройкой mysql-proxy. Иногда он потерял соединение с серверным сервером. Это привело к тому, что таблица не найдена.

Извините за беспокойство и благодарность всем, кто пытался помочь!

Имейте славный день.