对于我们的开发和生产环境,我们有不同的数据库IP地址。我们的开发环境在我们的开发人员机器上本地运行,并且指向本地网络上的单个开发数据库服务器。我们的生产环境使用RackSpace托管的数据库,并托管在它们的本地网络上。不知何故,我们的开发IP地址似乎已经缓存在生产上了。以下是我迄今所做的工作:
这已经持续了几个星期了,没有问题。当我禁用配置缓存时,问题就开始了。我知道你在想什么,它最近终于得到了一个配置更改,这是自上次缓存被清除以来有人所做的。这事儿可以理解。没有意义的是,我已经清除了上面提到的每个缓存、使用MageTool启用配置缓存和所有的东西,就像一种魅力。
发布于 2013-01-24 17:59:58
事实证明,整件事的解决是一个两步的过程。
因为我们的生产和开发环境需要不同的it,所以app/etc/local.xml是不被跟踪的,因此我们跟踪app/etc/local-example.xml,这样我们的所有开发人员就可以快速、轻松地将它复制到app/etc/local.xml上,并启动和运行。这已经成为一个公司的标准,我们使用它在我们所有的其他项目。谢天谢地,我的一个同事发现。
所以,不,我们的开发IP不是神奇地缓存在某个疯狂的、模糊的位置,我们只是无意中加载了它。将该文件重命名为app/etc/local.xml.example后,它停止引用我们的开发IP。耶!
现在,这与这个问题没有直接关系,但是因为这个解决方案引入了一个新的bug,所以我想提一下。一旦我们重命名了xml文件并清除了所有缓存,我们就开始看到一个新的错误。
PHP Fatal error: Call to a member function setQueryHook() on a non-object in app/code/core/Mage/Core/Model/Resource/Setup.php on line 347
在我们的示例文件中,我们在单个<default_setup />节点中定义了数据库资源。对于我们的生产环境,我们实际上有三重设置,它有单独的IP来进行读写查询,所以对于生产来说,我们有<default_read />和<default_write />节点,而不是单个<default_setup />节点。我从未能够找到关于资源中所允许和需要的内容的文档,但是读/写拆分是在每个关于该主题的另一篇StackOverflow文章中的说明中设置的,直到今天,它一直运行得很好。
凭直觉,我将<default_write />节点重命名为<default_setup />,一切都神奇地又开始工作了。我还不确定读和写是否正确地分开,但我将更新这个答案,一旦我确认一切正常。
https://stackoverflow.com/questions/14507736
复制相似问题