我使用Symfony 2.4和PostgreSQL。我手动(raw SQL)向表中添加了新列。在本地主机上一切正常,但在服务器上有问题。当我运行app/console doctrine:schema:update --dump-sql时,它告诉我应该添加列(我已经手动添加了列)并执行其他一些SQL查询(我不想运行)。
问题是-有没有办法从列表中只运行一个特定的查询The Schema-Tool would execute "6" queries to update the database.或者“告诉”我已经添加了新列的原则,因为现在它抛出了错误(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;

我试着清除缓存和条令缓存,但没用

最佳答案

首先,您已经手动添加了isEmailConfirmed列,这与isemailconfirmed(区分大小写)不同,后者在注释中的name="isemailconfirmed"中定义。这就是为什么Doctrine想再次添加这个专栏。
第二件事是你可能还应该执行这6个查询中的另一个,因为另一方面它可能会导致你的应用程序出现问题,因为真实的模式与Doctrine预期的不同。
回答你的问题:
不,没有办法告诉Doctrine只执行一个建议的查询或“告诉它您已经添加了此列”,因为它会在每次执行命令时比较预期的模式和实际的模式。无论如何,不建议在生产中使用doctrine:schema:update。建议使用一些数据库迁移工具。这项工作有条令迁移工具。

关于php - 运行特定的模式:教义不认识餐 table ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45589122/

10-15 22:24