У меня была таблица с большим сериалом PK, один FK с изменяющимся символом и FK bigint и уникальное ограничение на эти FK, символ с изменяющимся NOT NULL и два пустых строчных буквы.
Все это работало на виртуальной машине с Ubuntu 14.04.2 LTS, PHP 5.5.9 и PostgreSQL 9.3 и всеми другими пакетами из дистрибутива.
я сделал
$pdo->query("SELECT * FROM table")->fetchAll(PDO::FETCH_ASSOC)
а также
$r = pg_query($db, "SELECT * FROM table");
pg_fetch_all($r)
Последний вернул все строки, тогда как первый вернул все строки, кроме одной.
Я попытался выбрать и этот ряд, и пока pg_*()
функции работали как положено, PDO не возвращал ни одной строки.
Чтобы сделать это еще более странным, расхождение возникло только в PHP-FPM с lighttpd 1.4.33, но не при запуске с PHP CLI в оболочке.
Как это может быть?
Кто-нибудь еще сталкивался с подобной ситуацией?
И как я могу быть уверен, что PDO не подведет меня снова?
Я даже попытался перезагрузить виртуальную машину и перезапустил PostgreSQL, но результаты не изменились.
К сожалению, у меня нет резервной копии этого материала, потому что я должен был заставить все работать как можно скорее, поэтому я удалил этот загадочный ряд и заменил его новым, идентичным во всех столбцах, кроме PK.
Новый ряд был возвращен правильно обоими.
Задача ещё не решена.
Других решений пока нет …