【问题标题】:How to modify the structure of a production database with symfony 1.4如何使用 symfony 1.4 修改生产数据库的结构
【发布时间】:2012-03-24 23:18:13
【问题描述】:

问题:

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

如何在不擦除数据库的情况下做到这一点?

因为当您更改 schema.yml 时,如果您希望在数据库中进行更改,则需要 doctrine build --all,并且此任务会清除数据库,即 生产 数据库。


我尝试过的事情:

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 行

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

【问题讨论】:

    标签: php mysql symfony1


    【解决方案1】:

    我与多个 symfony 项目进行了广泛的合作,其中一个是高流量的企业 SAS(软件即解决方案)应用程序,我们从未从 Symfony 端传播模式更改。实际上,我们有一个新的初级开发人员尝试使用 Symfony 进行架构更改,不小心从我们的开发数据库中删除了数据。

    我的建议是手动对架构进行架构更改,然后更新您的数据架构文件 (.yml) 以反映架构更改,然后您可以运行以下命令来更新模型、过滤器和表单文件:

    php symfony doctrine:build-model
    php symfony doctrine:build-filters
    php symfony doctrine:build-forms
    php symfony cc
    

    请务必先对开发环境进行更改,以便测试并确保代码正常工作。然后,当您将代码推送到生产环境时,您可以进行架构更改然后发布代码。如果您所做的架构更改不会破坏现有的代码库,我会在代码推送前一两天完成

    【讨论】:

    • 如果你需要修改你的数据库,你运行手动sql查询来改变你的数据库结构?
    • 确实如此。通过 MySQL 运行命令并不太复杂。可能有一种方法可以安全地执行您从 Symfony 方面提出的要求,我只是想就所涉及的危险以及其他人如何处理同样的情况提出我的观点。
    • 看看这篇文章,这些命令可能是你需要的:stackoverflow.com/questions/9856243/…
    【解决方案2】:

    我可能误解了这个问题,但Migrations 不会解决您的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多