我使用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缓存,但它没有帮助
答案 0 :(得分:0)
首先,您已手动添加isEmailConfirmed
列,该列与isemailconfirmed
(区分大小写)不同,后者在注释中的name="isemailconfirmed"
中定义。这就是为什么Doctrine想要再次添加这个专栏的原因。
第二件事是你可能也应该执行这6个查询中的另一个,因为其他方式可能会导致你的应用程序出现问题,因为真正的架构将与Doctrine期望的不同。
并回答你的问题:
没有办法告诉Doctrine只执行一个建议的查询,或者告诉它你已经添加了这个列",因为它比较了预期的模式和每次执行命令时在运行时都是实际的。无论如何,不建议在生产中使用doctrine:schema:update
。建议使用某些数据库迁移工具。例如。有这个职位的Doctrine Migrations工具。