PDO 怎么能不 return 行 pg_query() 呢?
How can PDO not return a row which pg_query() does?
我有一个 table 具有 bigserial PK,一个字符变化的 FK 和一个 bigint FK 以及对这些 FK 的唯一约束,一个变化的 NOT NULL 字符和两个可为空的 smallint。
所有这些都是 运行在一个 VM 中使用 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)
后者return编辑了所有行,而前者return编辑了除一行以外的所有行。
我也尝试 select 那一行,虽然 pg_*()
函数按预期工作,但 PDO 没有 return 任何行。
更奇怪的是,差异只出现在 PHP-FPM 和 lighttpd 1.4.33 中,但当 运行 和 PHP CLI 在 shell.
怎么可能?
有没有其他人遇到过类似的情况?
我如何确定 PDO 不会再次让我失望?
我什至尝试重启虚拟机并重启 PostgreSQL,但结果并没有改变。
遗憾的是,我没有这些东西的备份,因为我必须让事情尽快开始工作,所以我删除了那个神秘的行并用一个新的行替换它,除了 PK 之外所有列都相同。
新行 return 两者均已正确编辑。
事实证明,当 PostgreSQL 的索引损坏时,它可能会产生令人困惑和不一致的结果。
在这种情况下,只需重新创建索引并检查它是否可以解决您的问题。
我有一个 table 具有 bigserial PK,一个字符变化的 FK 和一个 bigint FK 以及对这些 FK 的唯一约束,一个变化的 NOT NULL 字符和两个可为空的 smallint。
所有这些都是 运行在一个 VM 中使用 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)
后者return编辑了所有行,而前者return编辑了除一行以外的所有行。
我也尝试 select 那一行,虽然 pg_*()
函数按预期工作,但 PDO 没有 return 任何行。
更奇怪的是,差异只出现在 PHP-FPM 和 lighttpd 1.4.33 中,但当 运行 和 PHP CLI 在 shell.
怎么可能? 有没有其他人遇到过类似的情况? 我如何确定 PDO 不会再次让我失望?
我什至尝试重启虚拟机并重启 PostgreSQL,但结果并没有改变。
遗憾的是,我没有这些东西的备份,因为我必须让事情尽快开始工作,所以我删除了那个神秘的行并用一个新的行替换它,除了 PK 之外所有列都相同。
新行 return 两者均已正确编辑。
事实证明,当 PostgreSQL 的索引损坏时,它可能会产生令人困惑和不一致的结果。
在这种情况下,只需重新创建索引并检查它是否可以解决您的问题。