2015-10-16 106 views
7

我有一個網站在Symfony鏈接到一個MySQL數據庫。該網站有一些麻煩,所以我必須更新數據庫中的信息。問題是,當我更新數據庫時,它在那裏保持更新,但在網站上它沒有顯示任何更改。MySQL數據庫試圖更新信息但沒有在網站上出現

例如,用戶被註冊。我去數據庫更改電子郵件,所以我可以用同一封電子郵件註冊另一個帳戶。數據庫用新電子郵件進行更新,但在網站上說,舊電子郵件仍在使用中。

我知道我正在更新正確的數據庫,因爲當我在網站上註冊新客戶端時,它會出現在數據庫中。任何想法爲什麼這可能會發生?

+6

請參閱如何給出[MCVE] –

+8

無論是高速緩存,或者你正在更新錯誤的數據庫:) –

+2

如果你正在使用'FOSUserBundle'確保你正在更新'email'和'email_canonical'。 – qooplmao

回答

1

我有問題,首先使用我的主機服務器提供的mysql數據庫,但後來我安裝了最新的mysql數據庫版本在我的主機服務器內的softaculus中可用,然後我可以訪問mysql內部的softaculus或直接通過url www.mypage.com/mysql)。最後它完美地工作。你可以嘗試做類似的事情。

+0

由於正在使用cPanel,根據我的說法,我們必須使用與cPanel相同版本的mySQL。所以我們無法在沒有cPanel的情況下更新它 –

10

如果Symfony應用程序未顯示更新的數據庫記錄,這是因爲它正在使用仍包含舊數據的高速緩存。這通常是Symfony的問題,刷新頁面只是從緩存中重新加載。先嚐試清除緩存。現在,很多時候cache:clear並不能在命令行中工作,我總是發生這種情況,從來沒有真正理解爲什麼。答案是按照Fabien Potencier的提示刪除所有緩存文件:http://fabien.potencier.org/a-symfony-tip-clear-the-cache-without-the-command-line.html。這工作,是我的時間解決方案,例如;之後作曲家更新沒有清除緩存。事實上,我在進行作曲者安裝或更新之前,習慣於在開發機器上刪除緩存文件。

+0

應用程序由cPanel託管。我是否刪除文件adminstrator中的緩存文件,或者是否在WHM中刪除它們? –

+0

直接進入app/cache文件夾並使用任何工具刪除所有文件,以便訪問這些文件。如果cPanel給你一個文件管理員然後使用它。 –

+0

但這很奇怪,因爲我剛從根目錄下的/ cache文件夾中刪除了緩存(我之前下載了一個備份)。然後,我從數據庫中刪除了一個用戶,並試圖用相同的電子郵件再次註冊,並且仍在說該電子郵件存在:/所以我猜測它沒有做任何事情...... –

13

就像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的支持。


如果清除緩存沒有解決您的問題,很可能與你的應用程序或工作流出現問題,需要調試。有幾件事情,你可以嘗試:

  1. 確保您真的更新正確數據庫。在兩個單獨的DB客戶端上確認此 。

  2. Create your own Symfony command 其中唯一你要做的就是查詢數據庫。如果它返回正確的結果,則應檢查其他組件是否使用相同的查詢。如果沒有,請檢查您的配置/參數以確保您使用正確的數據庫。

+0

謝謝。從技術上講,我可以訪問SSH,但我現在似乎無法連接到它......我試圖弄清楚,然後嘗試解決方案。 –

+0

是的,問題出在緩存上。由於這個答案更完整和詳細,我會授予你的代表:)謝謝 –

4

亞當,

使用這些命令來清除緩存:

# dev environment 
$ app/console cache:clear 

# production environment 
$ app/console cache:clear --env=prod 
相關問題