我使用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/