我需要運行一堆腳本查詢,但我得到這個錯誤PDO + SQL緩衝查詢
PDOException(HY000): SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll().
我的腳本
$db = Database::connection();
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `comments` (
...
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8;
SQL;
$db->query($sql)->fetchAll();
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `comments_ratings` (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL;
$db->query($sql)->fetchAll();
$sql = <<<SQL
CREATE TRIGGER ...
SQL;
$db->query($sql)->fetchAll();
$sql = <<<SQL
CREATE TRIGGER ...;
SQL;
$db->query($sql)->fetchAll();
我的SQL語法是有效的,如果我跑手工查詢成功執行。正如你所看到的,我在每個查詢之後添加了對fetchAll
的調用,正如錯誤消息所示,但是我仍然看到相同的錯誤。我發現another answer,建議撥打closeCursor()
但如果我交換fetchAll
與closeCursor
結果仍然是相同的。我也嘗試將SQL組合成1個查詢,但是我得到一個語法錯誤,好像我無法在1個查詢中運行多個語句。
你有沒有嘗試過第二回答中提到的解決方案?無論如何,你應該把這個問題聯繫起來以避免這樣的事情。社區不知道您要引用哪個答案以及哪個網站。 –
@ConsiderMe是的,仍然沒有運氣。我可能嘗試了網絡上的所有內容,我作爲最後的手段在這裏發佈。 –
您的數據庫類是否具有'exec'方法以及'查詢'方法。如果是這樣,那就改用它。是的,我知道它應該與'query'方法一起工作,但它依賴於你的db類在運行query方法時實際執行的操作。 –