如何在不擦除数据库的情况下执行此操作?
因为当您更改schema.yml时,如果您希望在数据库中进行更改,则需要doctrine build --all
,并且此任务会清除数据库, production 数据库
This blog基本上表示要执行以下操作:
php symfony doctrine:data-dump
php symfony doctrine:build --all
phpsymfony doctrine:data-load data/fixtures/data.yml #default name for fixtures file
但是它打印了一个关于外键约束的错误。 (在我的例子中,我试图在现有的表中添加一个带有外键的表。)
基于同样的想法:我尝试了以下内容:
mysqldump -u root -p > DBexport.sql
php symfony doctrine:build --all
# open DBexport.sql in a text editor and remove all queries for
# creating the structure of the database
mysql -u root -p shop < DBexport_data.sql
但我有这个错误:
第34行的错误1136(21S01):列数与值计数不匹配 在第1行
因为在表中我添加了一个字段,而旧数据库没有正确的字段数...
答案 0 :(得分:2)
我与多个symfony项目进行了广泛的合作,其中一个是高流量企业SAS(软件作为解决方案)应用程序,我们从来没有从Symfony方面传播架构更改。我们实际上有一个新的初级开发者通过使用Symfony尝试进行模式更改而意外删除了我们的开发数据库中的数据。
我的建议是手动更改架构的架构,然后更新数据架构文件(.yml)以反映架构更改,然后您可以运行以下命令来更新模型,过滤器和表单文件:
php symfony doctrine:build-model
php symfony doctrine:build-filters
php symfony doctrine:build-forms
php symfony cc
请务必先对您的开发环境进行更改,以便测试并确保代码正常运行。然后,当您将代码推送到生产环境时,可以更改架构然后发布代码。如果您正在进行的架构更改将不会破坏现有的代码库,我会在代码推送之前的一两天内完成它们
答案 1 :(得分:1)
我可能误解了这个问题,但不会Migrations解决你的问题?