Symfony Make: Migration: Хранилище метаданных устарело, запустите команду syn c -metadata-storage, чтобы исправить эту проблему. - PullRequest
10 голосов
/ 16 июня 2020

У меня продолжает появляться эта проблема каждый раз, когда я пытаюсь выполнить миграцию с помощью командной строки: php bin/console make:migration или даже doctrine:migration status, когда я пробую doctrine:migration:sync-metadata-storage, поскольку они говорят мне, что я все еще получаю то же сообщение об ошибке. В настоящее время я изучаю symfony и слежу за руководством, но у меня как-то возникает эта проблема Symfony 4,4 php 7,2

Ответы [ 12 ]

16 голосов
/ 23 июня 2020

Это работает, если я изменяю DATABASE_URL в .env

DATABASE_URL=mysql://root:@127.0.0.1:3306/testtest?serverVersion=10.4.11

на

DATABASE_URL=mysql://root:@127.0.0.1:3306/testtest?serverVersion=mariadb-10.4.11

Symfony, в документации предлагается указать номер версии, но не тип базы данных

«В config / packages / doctrine .yaml есть другие параметры, которые вы можете настроить, включая вашу server_version (например, 5.7, если вы используете MySQL 5.7), которые могут повлиять на работу Doctrine». https://symfony.com/doc/current/doctrine.html

Исходный ответ: https://github.com/doctrine/DoctrineMigrationsBundle/issues/337#issuecomment -645390496

15 голосов
/ 17 июня 2020

Для меня было достаточно префикса версии сервера с помощью mariadb-xxx. Проблема устранилась. 12). "

https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting -using-a-url

6 голосов
/ 03 июля 2020

В моем случае это работает, когда я удаляю:? ServerVersion = 5.2 из URL.

6 голосов
/ 16 июня 2020

Я столкнулся с той же проблемой после обновления до Doctrine миграции 3

Похоже, что многое изменилось, включая имя таблицы, в которой хранятся версии миграции: (

Итак, я обновил config/packages/doctrine_migrations.yaml, создал новую (пустую) миграцию, очистил кеш (на всякий случай), и все прошло отлично :)

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%/src/Migrations'
storage:
    # Default (SQL table) metadata storage configuration
    table_storage:
        table_name: 'migration_versions'
        version_column_name: 'version'
        version_column_length: 1024
        executed_at_column_name: 'executed_at'
        execution_time_column_name: 'execution_time'

BTW. Документы актуальны;) https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html

4 голосов
/ 07 августа 2020

вы должны изменить serverVersion=5.7 в .env на serverVersion=mariadb-10.4.8

4 голосов
/ 04 июля 2020

Работает, если я изменяю DATABASE_URL в .env

From:

DATABASE_URL=mysql://root:@127.0.0.1:3306/testtest?serverVersion=10.4.11

To:

DATABASE_URL=mysql://root:@127.0.0.1:3306/testtest?serverVersion=mariadb-10.4.11
1 голос
/ 26 августа 2020

Symfony 5.1

если вы получили:

Указана недействительная версия платформы "maridb-10.4.13". Версия платформы должна быть указана в формате: " . . ".

просто выполните одно из

config / doctrine .yaml

doctrine:
  dbal:
    server_version: 'mariadb-10.4.13'

или в файле конфигурации .env

DATABASE_URL=mysql://...yoursettings...?serverVersion=mariadb-10.4.13
1 голос
/ 17 июня 2020

Здесь та же проблема .. Я «поиграл», но не пытаюсь дома!

Я удалил эти строки в vendor \ doctrine \ migrations \ lib \ Doctrine \ Migrations \ Metadata \ Storage \ TableMetadataStorage. php начало в строке 191

$expectedTable = $this->getExpectedTable();

        if ($this->needsUpdate($expectedTable) !== null) {
            throw MetadataStorageError::notUpToDate();
        }

Затем выполните make: migration и migrations: migrate. После успешной миграции вставьте функцию обратно.

0 голосов
/ 04 сентября 2020

Удалить версию сервера из файла .env DATABASE_URL=mysql://root:@127.0.0.1:3306/DB_Name

0 голосов
/ 31 июля 2020

вам нужно обновить свой db: php bin / console doctrine: schema: update --dump- sql then php bin / console doctrine: schema: update --force эта команда вносит изменения в вашу базу данных, как только проблема будет , к сожалению, он не создает новую версию миграции, поэтому не оставляет архивов. решено вы можете сообщить об этом

...