什么是重置数据库和迁移的最佳方式。
这是我尝试过的。
php bin/console doctrine:mi:diff
php bin/console doctrine:mi:mi
这不管用。
这样的时间运行单个版本
php bin/console doctrine:migrations:migrate 'DoctrineMigrations\Version20200722104913'
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个未注册迁移的迁移。
在迁移目录中,我只有两个迁移:
Version20200722104913.php
Version20200722143619.php这是状态,如果它有帮助的话。
bin/console do:mi:status
| Versions | Previous | DoctrineMigrations\Version20200717093052 |
| | Current | DoctrineMigrations\Version20200722150530 |
| | Next | DoctrineMigrations\Version20200722104913 |
| | Latest | DoctrineMigrations\Version20200722143619 |
|--------------------------------------------------------------------------------------------------------
| Migrations | Executed | 6 |
| | Executed Unavailable | 6 |
| | Available | 2 |
| | New | 2在这一点上,我非常希望有一个干净的数据库和一个迁移。
如何做到这一点?
发布于 2020-07-22 19:14:10
请注意,如果您在团队中工作,或者应用程序已经部署,那么拥有一个迁移脚本并不是最好的方法。但是,如果您是唯一的开发人员,或者如果您想重新设置某个提交,则可以这样做。
如果您真的希望只有一个迁移脚本,这里有一个解决方案。但是首先,由于理论中使用的migration_table,手动删除数据和表总是一个坏主意。此表包含了原则用于了解数据库当前状态的数据。因此,手动删除表,数据库将与迁移表不同步,脚本将失败。为了避免当前的错误,现在必须截断migration_table。如果不够,请删除迁移表,如果不够删除并创建数据库(最后一次,因为下面是避免这种不匹配的解决方案。
Step1:通过原则将数据库降级:迁移
php bin/console doctrine:migrations:migrate first -n在这个步骤中,您的数据库是空的。(提示是关键字"first")
Step2:删除(备份后)迁移目录中的所有文件
Step3:创建一个新的迁移
php bin/console make:migration(如果不使用make-bundle,也可以使用symfony console doctrine:migrations:diff )
Step4:必要时,验证并手动编辑创建的文件。
Step5:升级数据库
php bin/console doctrine:migration:migrate -n发布于 2020-07-22 17:03:32
进行一次迁移并不是最好的方法,特别是当您在一个团队中工作,并且在不同的分支中做一些特性时。有了这一迁移,就很容易陷入困境,做一些错误的事情,比如在您的情况下。所以有很多移民是可以的。
关于错误,您可以手动编辑迁移并修复所有错误,然后运行diff并进行迁移(如果需要的话),或者您可以删除数据库,删除所有迁移并创建一个新的迁移,然后在代码更改后创建迁移。
https://stackoverflow.com/questions/63038352
复制相似问题