我想要做的:对于使用
php bin/console doctrine:migrations:migrate
执行的每个迁移,将其包装在正确的事务中(开始事务/开始/回滚/...)。
我的 config/doctrine_migrations.yml 文件包含以下选项:
doctrine_migrations:
migrations_paths:
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
'DoctrineMigrations': '%kernel.project_dir%/migrations'
enable_profiler: false
# Run all migrations in a transaction.
all_or_nothing: true
# Adds an extra check in the generated migrations to ensure that is executed on the same database type.
check_database_platform: true
# Whether to wrap migrations in a single transaction.
transactional: true
无论如何,AbstractMigration 中的 isTransactional 方法默认返回 true。
我在这里遗漏了什么吗?这里的“交易”是否还有我所期待的其他含义?
我正在
symfony 6.3.7
和 doctine-migrations-bundle 3.2.4
在 5.7.29 MySQL database
上跑步
transactional
配置值显然仅在生成新迁移时使用,因为可以在生成器中看到,当事务性设置为false
时,AbstractMigration::isTransactional
将被覆盖以返回false
.