我一直在将网站从一台服务器迁移到另一台服务器。代码是巨大的,所以我自然而然地遇到了一些问题。我相信他们全都解决了除了这个持久的:
在特定页面上,我收到以下错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: fetch mode requires the colno argument' in /home/username/public_html/admin/lib/database.inc.php:59
引用的行:
$myResult->setFetchMode(PDO::FETCH_COLUMN);
我一直在PDO文档中来回走动,所以我的诊断最初是将获取模式设置为PDO :: FETCH_COLUMN也需要设置列号 - 那里没有很大的推论。所以我尝试将值0作为第二个参数。该页面花费超过30秒加载并获得PHP超时。值为1,然后我认为这不是通向成功的途径。
现在,真正令人困惑的是,这个网站在我的本地测试机器上完美运行,没有任何修改,以及在原始的生产服务器上。我没有轻松访问旧服务器上的规范,但我知道我的本地测试机器的那些与那些新服务器非常接近。
具体做法是:
本地PHP:5.3.3
远程PHP:5.3.4
本地MySQL:5.1.37
远程MySQL:5.0.91
由于我知道代码很好有一些配置,我希望有人知道我可以翻转的魔术开关。
- 编辑 -
即使将error_reporting设置为E_ALL |在本地计算机上的E_STRICT,此PDO异常不会出现。
答案 0 :(得分:1)
解决。不要问我为什么,但是将PHP降级到特定版本 - 正如原始开发人员所推荐的那样 - 可以解决问题。没关系,它使用更新的版本在本地工作正常。它刚刚起作用。
答案 1 :(得分:-1)
我知道一个老问题,但是我遇到了同样的错误,并以为我会发布发现的内容。我通过使用准备好的语句并将PDO::FETCH_COLUMN
传递给fetchAll()
来解决了这个问题。
$query = $database->prepare($sql);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_COLUMN);
我不知道为什么会这样,$database->query()
却不行。我在这里不需要准备好的语句,因为我没有将任何参数传递给SQL,但是它可以工作,所以我顺其自然。希望对其他有相同错误的人有所帮助。