我们已经有了一个使用pdo代码的PHP脚本和一个mySQL数据库,在运行了几周之后,它们都托管在我们的ISP标准LAMP堆栈上,没有任何问题。Boss希望部署到和CloudSQL上。CloudSQL使用相同的数据填充。从本地机器上的GAE实现中运行它,指向mySQL和CloudSQL,在这两种情况下都运行良好。
在将PHP代码部署到云中的GAE并更改pdo连接字符串以适应GAE到CloudSQL连接时,我们得到以下错误:
致命错误:调用非对象上的成员函数fetchColumn() .
include 'database.php'; //pdo connection with try|catch confirming connection.
$pdo = Database::connect(); //No problems here. We have connection object.
$sql = "SELECT Count(CatalogID) FROM Catalog";
$rows = $pdo->query($sql)->fetchColumn(); //This is the line that throws the error.为什么GAE处理方式不同?
有什么解决办法吗?(我强烈希望不调用rowCount()来反对“从目录中选择CatalogID;”。有太多的唱片不能带回来了。似乎效率低下。)
发布于 2016-03-10 21:39:13
找到了。查询($sql)部分由于$pdo不知道要查询CloudSQL实例中的哪个数据库而失败。CloudSQL仪表板有一个链接“如何连接到您的CloudSQL实例”。因为我复制并粘贴了这个连接代码,所以我忽略了它缺少dbname组件。
Google在mysqli部分中包含dbname部分,但没有包含“如何连接到CloudSQL实例”的pdo部分。
https://stackoverflow.com/questions/35926005
复制相似问题