之前在小飛魚本機上開發的程序,使用了PDO方式連接mysql數據庫,今天在部署到服務器上時居然不顯示數據,查找日誌文件出現下面的信息:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared
開始以爲是這個機器上的PDO沒有配置開放,試着調了下php.ini文件中的pdo選項,重啓服務後問題沒有得到解決。
期間試了一下其他頁面的程序,發現有的頁面上時可以直接顯示數據的,唯獨這個頁面有問題,而這個頁面裏用到了分頁、視圖這些,經過進一步查找資料,發現是視圖裏使用了左連接,查詢mysql的cache參數:
SHOW VARIABLES LIKE '%table_open_cache%';
SHOW VARIABLES LIKE '%table_definition_cache%';
發現有一個cache設置的比較小,調整一下:
SET GLOBAL table_open_cache=16384;
SET GLOBAL table_definition_cache=16384;
執行查詢後,數據可以正常顯示了。