2010-12-07 36 views
8

我已經重寫我的網站的PHP代碼,增加了MySQL的存儲過程。如何擺脫MySQL錯誤的「準備語句需要重新編寫」

在我的本地版本,一切工作正常,但我上傳我的網站託管服務器,我constatly越來越致命錯誤後「預處理語句需要重新準備」。

有時候頁面加載,加載有時會失敗,我看到這個錯誤。那是什麼?

更新:移動到VPS服務器後,問題已消失。感謝幫助。

+0

你應該發佈一些代碼。 – jwueller 2010-12-07 19:41:14

+0

下面的答案沒有達到問題的核心。在更多的答案[此重複](https://stackoverflow.com/questions/29480915/mysql-view-prepared-statement-and-prepared-statement-needs-to-be-re-prepar)。 – reinierpost 2017-06-06 15:18:34

回答

16

這是一個可能性:MySQL bug #42041

他們建議正在增加的table_definition_cache值。

你可以閱讀有關重新準備in the MySQL docs

+0

非常感謝!我會嘗試詢問我的託管服務提供商。但它看起來像唯一的辦法,我現在就是爲什麼你需要大膽和大字體租用VPS或專用服務器是昂貴:( – oyatek 2010-12-07 20:41:26

0

我的解決方案是創建一個程序是這樣的:

DELIMITER $$ 
-- 
-- Procedimientos 
-- 
DROP PROCEDURE IF EXISTS `dch_content_class_content`$$ 

CREATE DEFINER=`renuecod`@`localhost` PROCEDURE `dch_content_class_content`(IN $classId INTEGER) 
BEGIN 
-- vw_content_class_contents is a VIEW (UNIONS) 
    select * from vw_content_class_contents; 
END$$ 

我希望幫助別人

-1

我是在一個共享的主機環境得到在Ruby中同樣的錯誤on Rails的。它可能不是最安全的解決方案,但禁用準備好的語句爲我擺脫了錯誤信息。

這可以通過添加完成「prepared_statements:假」設置爲您database.yml文件:

production: 
    prepared_statements: false 

這似乎是一個合理的解決方案,當你沒有了對配置設置控制MySQL服務器。