我有一个带有 bigserial PK 的表,一个字符变化 FK 和一个 bigint FK 以及对这些 FK 的唯一约束,一个字符变化 NOT NULL 和两个可为空的 smallint。
所有这些都运行在带有 Ubuntu 14.04.2 LTS、PHP 5.5.9 和 PostgreSQL 9.3 以及该发行版中的所有其他软件包的 VM 中。
我做了
$pdo->query("SELECT * FROM table")->fetchAll(PDO::FETCH_ASSOC)
和
$r = pg_query($db, "SELECT * FROM table");
pg_fetch_all($r)
后者返回所有行,而前者返回除一个之外的所有行。
我也尝试选择该行,虽然pg_*()
函数按预期工作,但 PDO 没有返回任何行。
更奇怪的是,这种差异只出现在使用 lighttpd 1.4.33 的 PHP-FPM 中,但在 shell 中使用 PHP CLI 运行时不会出现。
怎么可能?有没有其他人遇到过类似的情况?我怎么能确定 PDO 不会再让我失望了?
我什至尝试重新启动 VM 并重新启动 PostgreSQL,但结果并没有改变。
可悲的是,我没有这些东西的备份,因为我必须尽快让事情正常工作,所以我删除了那个神秘的行并用一个新行替换它,除了 PK 之外的所有列都相同。
两者都正确返回了新行。