首页 > 解决方案 > 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>”。

标签: phpsymfonydoctrine-ormmariadbsymfony5

解决方案


设置学说迁移

postgres和mysql的配置方式相同(当然需要设置不同的PDO驱动,服务器版本)|

这是 symfony 5.2 和 PHP 7.4 的测试和工作示例

您需要在项目中更新两件事

  1. 安装学说后,你得到了新的配置文件 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)

现在你可以免费使用迁移了


推荐阅读