我在Symfony有一个链接到MySQL数据库的网站。该网站有一些麻烦,所以我必须更新数据库中的信息。问题是,当我更新数据库时,它会在那里保持更新,但在网站上它不会显示任何更改。
例如,用户已注册。我去数据库更改电子邮件,以便我可以使用相同的电子邮件注册另一个帐户。数据库使用新电子邮件进行更新,但在网站上显示旧电子邮件仍在使用中。
我知道我正在更新正确的数据库,因为当我在网站上注册新客户端时,它会出现在数据库中。关于为什么会发生这种情况的任何想法?
答案 0 :(得分:13)
就像Angel Iliikov在评论中提到的那样,它很可能是一个缓存问题。以下建议假定您可以访问命令行 - 典型的Symfony用户应该这样做。如果您还没有,大多数托管服务提供商都允许您获得SSH访问权限。
清除以下缓存:
<强> 1。 Symfony的缓存
Symfony会在缓存文件中存储大量数据,以防止它从头开始处理请求。当Symfony应用程序变得不稳定时,一个非常常见的解决方法是清除此缓存并重试。清除此缓存的标准方法是在项目的根目录下运行控制台命令:
$ app/console cache:clear
如果您遇到问题,David Soussan answer会提供有关此问题的更多信息。
<强> 2。 Doctrine的缓存
根据another question的评论者(由我格式化):
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
-amitchhajer
第3。您的浏览器缓存
这不太可能导致任何问题。但是,如果您正在通过HTTP发送缓存标头 - 应用程序可能已正确更新数据,但您的浏览器正在显示旧页面。
每个浏览器都有不同的清除缓存的方式。 Google为how to do it Chrome提供支持。和Mozilla为how do it in Firefox提供支持。
如果清除缓存无法解决您的问题,则可能是您的应用程序或工作流程出现问题,需要进行调试。您可以尝试一些事项:
确保您确实更新了正确的数据库。确认一下 在两个单独的DB客户端上。
Create your own Symfony command 你唯一能做的就是查询数据库。如果它返回正确的结果,则应检查其他组件是否使用相同的查询。如果没有,请检查您的配置/参数以确保您使用正确的数据库。
答案 1 :(得分:10)
如果您的Symfony应用程序未显示更新的数据库记录,那是因为它正在使用仍包含旧数据的缓存。这通常是Symfony的问题,刷新页面只是从缓存重新加载。尝试先清除缓存。现在,经常缓存:清除不能从命令行工作,我已经一直发生,从来没有真正理解为什么。答案是删除所有缓存文件,根据Fabien Potencier的提示:http://fabien.potencier.org/a-symfony-tip-clear-the-cache-without-the-command-line.html。这是有效的,是我的首选解决方案,例如;之后,composer update没有清除缓存。事实上,我习惯于在进行作曲家安装或更新之前删除我的开发机器上的缓存文件。
答案 2 :(得分:4)
亚当,
使用这些命令清除缓存:
creates
答案 3 :(得分:1)
我首先使用我的主机服务器提供的mysql数据库时遇到了问题,但后来我安装了主机服务器内softaculus中可用的最新mysql数据库版本,然后我就可以访问softaculus中的mysql或者直接通过url访问mysql(www .mypage.com / MySQL的)。最后它完美无缺。你可以尝试做类似的事情。