Don*_*Msc 7 php doctrine database-migration symfony
因此,我正在设置一个 Symfony 5 项目并运行以下命令来从实体注释生成数据库,如下所示:
php bin/console doctrine:schema:validate
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作,相反,我只是收到此错误:
**[ERROR]** The version "latest" couldn't be reached, there are no registered migrations.
Run Code Online (Sandbox Code Playgroud)
diff命令正确生成包含up()和down()函数的迁移文件,但是当我随后运行migrate命令来生成数据库时,它会失败并出现上述错误。
我还注意到文件 /config/packages/doctrine_migrations.yml 最近已更改为:
doctrine_migrations:
migrations_paths:
'App\Migrations': '%kernel.project_dir%/src/Migrations'
Run Code Online (Sandbox Code Playgroud)
然而,学说似乎正在这条路径之外寻找以下路径中的迁移:
'%kernel.project_dir%/migrations'
Run Code Online (Sandbox Code Playgroud)
如何解决上述错误,以便migrate命令按预期工作并从生成的迁移文件生成数据库表?
php bin/console 调试:配置doctrine_migrations
Current configuration for extension with alias "doctrine_migrations"
================================================================= ===
doctrine_migrations:
migrations_paths:
App\Migrations: /var/www/src/Migrations
services: { }
factories: { }
storage:
table_storage:
table_name: null
version_column_name: null
version_column_length: null
executed_at_column_name: null
execution_time_column_name: null
migrations: { }
connection: null
em: null
all_or_nothing: false
check_database_platform: true
custom_template: null
organize_migrations: false
Run Code Online (Sandbox Code Playgroud)
ric*_*yce 11
检查迁移脚本的命名空间和迁移包的配置。将目录从 移动到 后,src/migrations您migrations必须将文件的命名空间更改为DoctrineMigrations并将存储表名称更改为存在的表名称(否则新的默认迁移表名称为doctrine_migration_versions)。
这是我的建议:/migrations 中的一些迁移文件
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
// ...
Run Code Online (Sandbox Code Playgroud)
配置:
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'
storage:
# Default (SQL table) metadata storage configuration
table_storage:
table_name: 'migration_versions'
Run Code Online (Sandbox Code Playgroud)
这有助于我使用 Symfony5 从头开始设置项目,并向后兼容当前正在运行的生产系统。
| 归档时间: |
|
| 查看次数: |
11640 次 |
| 最近记录: |