php - Symfony 5,迁移到数据库 mariadb 的教义问题
问题描述
我对 symfony 5 有疑问。
当我执行命令时:php bin/console doctrine:migrations:migrate
我有一个错误:
在 MetadataStorageError.php 第 13 行:元数据存储不是最新的,请运行 sync-metadata-storage 命令修复此问题。
我修改我env.local
的以使用 MariaDB 指定服务器版本:
DATABASE_URL=mysql://db_user:.......@127.0.0.1:3306/bundletest?serverVersion=mariadb-10.5
当我执行时:php bin/console doctrine:migrations:migrate
我还有另一个错误:
在 DBALException.php 第 86 行:
Invalid platform version "mariadb-10.5" specified. The platform version has to be specified in the format:
“^(?:5.5.5-)?(mariadb-)?<major_version>.<minor_version>.<patch_version>”。
解决方案
设置学说迁移
postgres和mysql的配置方式相同(当然需要设置不同的PDO驱动,服务器版本)|
这是 symfony 5.2 和 PHP 7.4 的测试和工作示例
您需要在项目中更新两件事
- 安装学说后,你得到了新的配置文件 project_dir/config/packages/doctrine.yaml
请设置如下
doctrine: dbal: driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci url: '%env(resolve:DATABASE_URL)%' orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware auto_mapping: true mappings: App: is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App
在你的 .env 文件中
#DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
取消注释,设置您的用户和数据库设置,添加 ?serverVersion
DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7
跑
php bin/console doctrine:database:create (it is better to create db with your project config settings)
现在你可以免费使用迁移了
推荐阅读
- c# - JSON解析和检索字符串
- ray - 如何在 2 个 GPU 上运行 Flow 训练?
- ios - 将 AWS Cognito 与 Swift 结合使用时,是否可以自定义默认 AWSAuthUI 登录屏幕?
- neo4j - 从现有图表创建新关系
- uri - 如何在发布时检索 API Gateway URI
- javascript - Tinymce 模板:按 ENTER 后如何将光标保持在 div 内
- hyperledger-fabric - 如何在 Hyperledger Fabric GO 中执行注销操作?
- mysql - 如何使用 mysql-client 从 mac 连接到 mysql url
- python - 如何有效地将功能应用于大熊猫数据框的行?
- django - 如何为 Django 单例模型修复“名称‘自我’未定义”