【问题标题】:Symfony same code, different server, no field or assocationSymfony 相同的代码,不同的服务器,没有字段或关联
【发布时间】:2015-06-15 12:07:04
【问题描述】:

我有两台服务器(在本地和一台生产上)。它们具有相同的设置。当我想让我的新代码投入生产时,我唯一更新的是 src 文件夹。所以当我推送一个版本时,这个文件夹是完全一样的。

在我的本地服务器上,我的实体/表中的新列有效,可以创建、更新等。但在我的生产环境中,这个新列没有被教义注意到甚至选择。

新列在我的数据库(生产和本地)中,在我的entity.php 文件中,在我的entity.orm.yml 文件中。

我选择了app/console cache:clear 选项。 dev 和 prod 都在两台服务器上。

我做错了什么?

【问题讨论】:

  • auto_mapping 在 config.yml 中可能未设置为 true
  • 您的本地服务器和生产服务器是否都在“prod”模式下运行?如果你运行 'app/console dictionary:schema:update --dump-sql' 会得到什么输出?
  • 你更新代理了吗?
  • @pcm 自动映射设置为 true。
  • @AngeloA 如果教义看不到架构更新的这些字段,则在应用程序运行时将看不到它们。最典型的原因是生产环境中的 entity.orm.yml 文件与本地服务器上的文件不匹配,或者缓存没有刷新。另一次我看到这个问题是 orm.yml 中的一个错误,但它在任何一个服务器上都不起作用。

标签: php symfony doctrine-orm


【解决方案1】:

终于找到了解决办法。

因为我没有在本地服务器上使用元数据缓存,但我在生产服务器上使用了,它保存了我的映射信息。这就是为什么教义不知道我有新专栏的原因。解决方案是使用以下方法清除元数据缓存:

php bin/console doctrine:cache:clear-metadata

之后我运行 php bin/console doctrine:schema:update --dump-sql 并获得了新列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多