PHP, MySQL и FOUND_ROWS() bug
Рубрика: Development, MySQL | 5 June 2008, 11:53 |
Vadim Voituk
“Словил” сегодня пренеприятнейший баг, который стоил мне более часа потерянного времени.
Выполняем в консольном mysql-клиенте такой запрос:
SELECT SQL_CALC_FOUND_ROWS FROM tablename LIMIT 5;
Получем resultset из 5ти результатов (предполагается, что в таблице tablename больше 5ти записей)
Теперь в этом же соединении выполняем:
SELECT FOUND_ROWS();
Получаем значение, равное количеству строк в tablename – ничего сверхъестественного, все как и ожидалось.
Самое интересное начинается если повторить выполнить эти SQL-запросы из PHP-скрипта (при определенных условиях, но о оних ниже) – второй запрос будет всегда возвращать 0.
Причиной всему – , которая наблюдается при включенной опции
mysql.trace_mode=true
Дабы не поулчить подобную неприятность в своих проектах рекомендую пока установить в false.
При тестировании использовался PHP 5.2.1 и с модулем mysql client API 5.1.16-beta.
Tweet
Вот это так грабли! Будем знать, спасибо!
Спасибо!
3 часа убил ….
огромное спасибо. Пол дня промучался… искал как выяснилось несуществующую ошибку в своей программе. Башку всю переломал, т.к. написано было всё правильно… Так бы наверное и мучался если бы не Вы.