我有一個網站在Symfony鏈接到一個MySQL數據庫。該網站有一些麻煩,所以我必須更新數據庫中的信息。問題是,當我更新數據庫時,它在那裏保持更新,但在網站上它沒有顯示任何更改。MySQL數據庫試圖更新信息但沒有在網站上出現
例如,用戶被註冊。我去數據庫更改電子郵件,所以我可以用同一封電子郵件註冊另一個帳戶。數據庫用新電子郵件進行更新,但在網站上說,舊電子郵件仍在使用中。
我知道我正在更新正確的數據庫,因爲當我在網站上註冊新客戶端時,它會出現在數據庫中。任何想法爲什麼這可能會發生?
我有一個網站在Symfony鏈接到一個MySQL數據庫。該網站有一些麻煩,所以我必須更新數據庫中的信息。問題是,當我更新數據庫時,它在那裏保持更新,但在網站上它沒有顯示任何更改。MySQL數據庫試圖更新信息但沒有在網站上出現
例如,用戶被註冊。我去數據庫更改電子郵件,所以我可以用同一封電子郵件註冊另一個帳戶。數據庫用新電子郵件進行更新,但在網站上說,舊電子郵件仍在使用中。
我知道我正在更新正確的數據庫,因爲當我在網站上註冊新客戶端時,它會出現在數據庫中。任何想法爲什麼這可能會發生?
我有問題,首先使用我的主機服務器提供的mysql數據庫,但後來我安裝了最新的mysql數據庫版本在我的主機服務器內的softaculus中可用,然後我可以訪問mysql內部的softaculus或直接通過url www.mypage.com/mysql)。最後它完美地工作。你可以嘗試做類似的事情。
由於正在使用cPanel,根據我的說法,我們必須使用與cPanel相同版本的mySQL。所以我們無法在沒有cPanel的情況下更新它 –
如果Symfony應用程序未顯示更新的數據庫記錄,這是因爲它正在使用仍包含舊數據的高速緩存。這通常是Symfony的問題,刷新頁面只是從緩存中重新加載。先嚐試清除緩存。現在,很多時候cache:clear並不能在命令行中工作,我總是發生這種情況,從來沒有真正理解爲什麼。答案是按照Fabien Potencier的提示刪除所有緩存文件:http://fabien.potencier.org/a-symfony-tip-clear-the-cache-without-the-command-line.html。這工作,是我的時間解決方案,例如;之後作曲家更新沒有清除緩存。事實上,我在進行作曲者安裝或更新之前,習慣於在開發機器上刪除緩存文件。
應用程序由cPanel託管。我是否刪除文件adminstrator中的緩存文件,或者是否在WHM中刪除它們? –
直接進入app/cache文件夾並使用任何工具刪除所有文件,以便訪問這些文件。如果cPanel給你一個文件管理員然後使用它。 –
但這很奇怪,因爲我剛從根目錄下的/ cache文件夾中刪除了緩存(我之前下載了一個備份)。然後,我從數據庫中刪除了一個用戶,並試圖用相同的電子郵件再次註冊,並且仍在說該電子郵件存在:/所以我猜測它沒有做任何事情...... –
就像Angel Iliikov在評論中提到的那樣,這很可能是一個緩存問題。以下建議假定您可以訪問命令行 - 典型的Symfony用戶應該這樣做。如果你還沒有它,大多數主機提供商允許你獲得SSH訪問權限。
清除以下緩存:
1. Symfony的緩存
的Symfony將存儲大量的高速緩存中的文件中的數據,以防止它不必從無到有的過程的請求。當Symfony應用程序變得不可靠時,一個非常常見的修復方法是清除此緩存並重試。清除此高速緩存的標準方法是在你的項目的根目錄控制檯命令運行:
$ app/console cache:clear
如果您遇到問題,David Soussan answer提供在這一個的更多信息。
2.主義的緩存
據對another question評議(由我格式化):
學說緩存通常存儲在APC,而不是在文件 系統,以便消除緩存文件不會幫助。一般
app/console cache:clear
只適用於symfony(應用程序)緩存。我不認爲它清除了教條緩存(s)。-caponica
替代PHP緩存(APC)是在啓用php.ini
的可選組件。如果它恰好被啓用,Doctrine可能會緩存信息。
在previously mentioned question接受的答案提供了答案清除學說的緩存:
$ app/console doctrine:cache:clear-metadata $ app/console doctrine:cache:clear-query $ app/console doctrine:cache:clear-result
-amitchhajer
3.您瀏覽器的緩存
這是不太可能導致任何問題。但是,如果您正在通過HTTP發送緩存標頭 - 有可能應用程序將已正確更新數據,但您的瀏覽器正在顯示舊頁面。
每個瀏覽器都有不同的清除緩存的方式。 Google提供對how to do it Chrome的支持。 Mozilla提供對how do it in Firefox的支持。
如果清除緩存沒有解決您的問題,很可能與你的應用程序或工作流出現問題,需要調試。有幾件事情,你可以嘗試:
確保您真的更新正確數據庫。在兩個單獨的DB客戶端上確認此 。
Create your own Symfony command 其中唯一你要做的就是查詢數據庫。如果它返回正確的結果,則應檢查其他組件是否使用相同的查詢。如果沒有,請檢查您的配置/參數以確保您使用正確的數據庫。
謝謝。從技術上講,我可以訪問SSH,但我現在似乎無法連接到它......我試圖弄清楚,然後嘗試解決方案。 –
是的,問題出在緩存上。由於這個答案更完整和詳細,我會授予你的代表:)謝謝 –
亞當,
使用這些命令來清除緩存:
# dev environment
$ app/console cache:clear
# production environment
$ app/console cache:clear --env=prod
請參閱如何給出[MCVE] –
無論是高速緩存,或者你正在更新錯誤的數據庫:) –
如果你正在使用'FOSUserBundle'確保你正在更新'email'和'email_canonical'。 – qooplmao