运行特定架构:更新|教义不承认表格cham symfony2

时间:2017-08-09 11:15:10

标签: php postgresql symfony doctrine-orm

我使用Symfony 2.4和PostgreSQL。我手动(原始SQL)向我的表添加了新列。在localhost一切都很好,但在服务器上有一个问题。当我运行app/console doctrine:schema:update --dump-sql时,它告诉它应该添加列(我已经手动添加)并执行一些其他SQL查询(我不想运行)。

问题是 - 是否有办法只从该列表The Schema-Tool would execute "6" queries to update the database.运行一个特定查询或“让我知道”Doctrine我已经添加了新列,因为现在它抛出错误(Symfony看不到我在服务器上的新专栏。

我在模型中的专栏

/**
 * @var boolean $isEmailConfirmed
 *
 * @ORM\Column(name="isemailconfirmed", type="boolean", options={"default":FALSE})
 */
private $isEmailConfirmed;

我的原始SQL查询是:

alter table player add column isEmailConfirmed boolean default false not null;

我试图清除缓存并清除Doctrine缓存,但它没有帮助

1 个答案:

答案 0 :(得分:0)

首先,您已手动添加isEmailConfirmed列,该列与isemailconfirmed(区分大小写)不同,后者在注释中的name="isemailconfirmed"中定义。这就是为什么Doctrine想要再次添加这个专栏的原因。

第二件事是你可能也应该执行这6个查询中的另一个,因为其他方式可能会导致你的应用程序出现问题,因为真正的架构将与Doctrine期望的不同。

并回答你的问题:

没有办法告诉Doctrine只执行一个建议的查询,或者告诉它你已经添加了这个列",因为它比较了预期的模式和每次执行命令时在运行时都是实际的。无论如何,不​​建议在生产中使用doctrine:schema:update。建议使用某些数据库迁移工具。例如。有这个职位的Doctrine Migrations工具。