首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“工厂重置”任何迁移的最佳方式?

什么是“工厂重置”任何迁移的最佳方式?
EN

Stack Overflow用户
提问于 2020-07-22 15:56:43
回答 2查看 6.7K关注 0票数 2

什么是重置数据库和迁移的最佳方式。

这是我尝试过的。

  1. 删除所有迁移以及删除所有数据库表。然后运行

php bin/console doctrine:mi:diff

php bin/console doctrine:mi:mi

这不管用。

  1. 尝试在

这样的时间运行单个版本

php bin/console doctrine:migrations:migrate 'DoctrineMigrations\Version20200722104913'

  1. 我试过了:

php bin/console doctrine:database:drop --force

php bin/console doctrine:database:create

php bin/console doctrine:mi:mi

问题(详细):

我做的每一件事都会导致同样的结果。

主义者认为我仍然有一些表要生成,这些表已经消失很久了(不在环境中了)

这就是为什么我有这个错误:

执行'DROP _card_

_card‘时发生异常:

SQLSTATE42S02:未找到基表或视图: 1051未知表“symfony.greetings_card_category”

我也收到了这个警告

警告您以前在数据库中执行的6个未注册迁移的迁移。

在迁移目录中,我只有两个迁移:

代码语言:javascript
复制
Version20200722104913.php
Version20200722143619.php

这是状态,如果它有帮助的话。

bin/console do:mi:status

代码语言:javascript
复制
| Versions             | Previous             | DoctrineMigrations\Version20200717093052                               |
|                      | Current              | DoctrineMigrations\Version20200722150530                               |
|                      | Next                 | DoctrineMigrations\Version20200722104913                               |
|                      | Latest               | DoctrineMigrations\Version20200722143619                               |
|--------------------------------------------------------------------------------------------------------
| Migrations           | Executed             | 6                                                                      |
|                      | Executed Unavailable | 6                                                                      |
|                      | Available            | 2                                                                      |
|                      | New                  | 2

在这一点上,我非常希望有一个干净的数据库和一个迁移。

如何做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-22 19:14:10

请注意,如果您在团队中工作,或者应用程序已经部署,那么拥有一个迁移脚本并不是最好的方法。但是,如果您是唯一的开发人员,或者如果您想重新设置某个提交,则可以这样做。

如果您真的希望只有一个迁移脚本,这里有一个解决方案。但是首先,由于理论中使用的migration_table,手动删除数据和表总是一个坏主意。此表包含了原则用于了解数据库当前状态的数据。因此,手动删除表,数据库将与迁移表不同步,脚本将失败。为了避免当前的错误,现在必须截断migration_table。如果不够,请删除迁移表,如果不够删除并创建数据库(最后一次,因为下面是避免这种不匹配的解决方案。

Step1:通过原则将数据库降级:迁移

代码语言:javascript
复制
php bin/console doctrine:migrations:migrate first -n

在这个步骤中,您的数据库是空的。(提示是关键字"first")

Step2:删除(备份后)迁移目录中的所有文件

Step3:创建一个新的迁移

代码语言:javascript
复制
php bin/console make:migration

(如果不使用make-bundle,也可以使用symfony console doctrine:migrations:diff )

Step4:必要时,验证并手动编辑创建的文件。

Step5:升级数据库

代码语言:javascript
复制
php bin/console doctrine:migration:migrate -n
票数 3
EN

Stack Overflow用户

发布于 2020-07-22 17:03:32

进行一次迁移并不是最好的方法,特别是当您在一个团队中工作,并且在不同的分支中做一些特性时。有了这一迁移,就很容易陷入困境,做一些错误的事情,比如在您的情况下。所以有很多移民是可以的。

关于错误,您可以手动编辑迁移并修复所有错误,然后运行diff并进行迁移(如果需要的话),或者您可以删除数据库,删除所有迁移并创建一个新的迁移,然后在代码更改后创建迁移。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63038352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档