如何使用symfony 1.4修改生产数据库的结构

时间:2012-03-24 23:18:14

标签: php mysql symfony1

问题:

  • 我有一个symfony项目,其中包含一个包含生产数据的数据库
  • 我想更改其结构(添加/删除表格或添加/删除/更改现有字段)

如何在不擦除数据库的情况下执行此操作?

因为当您更改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行

因为在表中我添加了一个字段,而旧数据库没有正确的字段数...

2 个答案:

答案 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解决你的问题?