2015-10-16 19 views
7

私はSymfonyのウェブサイトをMySQLデータベースにリンクしています。ウェブサイトに問題があるので、データベースの情報を更新する必要があります。問題は、データベースを更新するときに更新されたままですが、Webサイトには変更が反映されません。MySQLデータベースは情報を更新しようとしていますが、ウェブサイトには表示されません

たとえば、ユーザーが登録されています。私は同じ電子メールで別のアカウントを登録できるように、電子メールを変更するためにデータベースに行きます。データベースは新しい電子メールで更新されますが、Webサイトには古い電子メールがまだ使用中であることが示されています。

私は正しいデータベースを更新していることを知っています。新しいクライアントをウェブサイトに登録すると、データベースに表示されるためです。なぜこれが起こっているのかについてのアイデアはありますか?

+6

[MCVE] –

+8

キャッシュまたは間違ったデータベースを更新しているのいずれかを与える方法を参照してください:) –

+2

の場合あなたは 'FOSUserBundle'を使って' email_canonical'だけでなく 'email'も更新していることを確認しています。 – qooplmao

答えて

1

私は最初にホストサーバーから提供されたmysqlデータベースを使用する際に問題がありましたが、私はホストサーバー内のsoftaculusで最新のmysqlデータベースバージョンをインストールしてから、softaculus内のmysqlにアクセスできましたwww.mypage.com/mysql)。最後に完全に動作します。同様のことをやろうとすることができます。

+0

cPanelが使用されているので、私が言ったことから、cPanelと同じバージョンのmySQLを使用する必要があります。そのため、最初にcPanelを実行することなく更新することはできません。 –

10

Symfonyアプリケーションが、古いデータを含んでいるキャッシュを使用しているため、更新されたデータベースレコードを表示していない場合。これはSymfonyの問題であり、キャッシュからリロードするだけのページをリフレッシュすることがよくあります。キャッシュを最初にクリアしてみてください。さて、非常に頻繁にキャッシュされます:クリアはコマンドラインからは機能しません、私はそれが常に起こっていたし、なぜ本当に理解していない。答えは、Fabien Potencierのヒント(http://fabien.potencier.org/a-symfony-tip-clear-the-cache-without-the-command-line.html)のとおり、すべてのキャッシュファイルを削除することです。それはうまくいき、例えば以下のようなときのための解決策です。作曲家の更新はその後キャッシュをクリアしませんでした。実際、私は、コンポーザのインス​​トールや更新を行う前に、私のdevマシン上のキャッシュファイルを削除するという習慣を持っていました。

+0

アプリケーションはcPanelによってホストされています。ファイル管理者のキャッシュファイルを削除するのですか、それともWHMで削除しますか? –

+0

app/cacheフォルダに直接移動し、これらのファイルにアクセスできるツールを使用してすべてのファイルを削除します。 cPanelがファイル管理者を与えたら、それを使用してください。 –

+0

しかし、私はちょうどルートディレクトリの/ cacheフォルダからキャッシュを削除したので(前にバックアップをダウンロードしたので)、変です。それから、データベースからユーザーを削除し、同じ電子メールで再度登録しようとしましたが、それでも電子メールが存在すると言っています:/それで、何もしなかったと推測しています... –

13

Angel Iliikovのコメントのように、キャッシングの問題は非常に起こりそうです。次の提案は、あなたが典型的なSymfonyユーザが必要とするコマンドラインにアクセスできることを前提としています。まだ持っていない場合、ほとんどのホスティングプロバイダはSSHにアクセスできるようにします。

クリア次キャッシュ:

1. symfonyのキャッシュ

symfonyは最初からのリクエストを処理することから、それを防ぐために、キャッシュファイル内のデータを大量に保存されます。 Symfonyのアプリケーションが不安定になるとき、非常に一般的な修正は、このキャッシュをクリアして再試行することです。このキャッシュをクリアするための標準的な方法は、プロジェクトのルートディレクトリで、コンソールコマンドの実行である:

$ app/console cache:clear 

問題が発生した場合は、David Soussan answerはこの1についての詳細な情報を提供します。 (私によってフォーマット)another question上のコメンターによると

2. Doctrineのキャッシュ

教義キャッシュは、多くの場合、むしろそのキャッシュを削除したファイル システムに比べてAPCに保存されていますファイルは役に立たないでしょう。一般的なapp/console cache:clearは、symfony(app)キャッシュ用です。私はそれが教義キャッシュをクリアしたとは思わない。

-caponica

代替PHPキャッシュ(APC)はphp.iniで有効任意成分です。可能であれば、Doctrineはそこに情報をキャッシュしている可能性があります。

previously mentioned questionの受け入れ答えはDoctrineのキャッシュをクリアするための答えを提供します。

$ app/console doctrine:cache:clear-metadata 
$ app/console doctrine:cache:clear-query 
$ app/console doctrine:cache:clear-result 

3.

-amitchhajerブラウザのキャッシュ

をこれは非常に低いです問題を引き起こす可能性があります。しかし、HTTP経由でヘッダーを送信する何かをしている場合、アプリケーションが正しくデータを更新したが、ブラウザが古いページを表示している可能性があります。

各ブラウザには、キャッシュを消去する方法があります。 Googleはhow to do it Chromeのサポートを提供しています。 Mozillaはhow do it in Firefoxをサポートしています。


キャッシュをクリアしても問題が解決しない場合は、アプリケーションやワークフローに問題があり、デバッグが必要になる可能性があります。あなたが試すことができますいくつかのこと:

  1. は、あなたが本当に正しいデータベースを更新していることを確認します。この を2つの別個の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 
関連する問題