web-dev-qa-db-ja.com

symfony make:移行:メタデータストレージが最新ではありません、この問題を解決するためにsync-metadata-storageコマンドを実行してください。

コマンドラインを使って移行しようとするたびにこの問題を取得し続けます:_php bin/console make:migration_または_doctrine:migration status_私は私に言うように_doctrine:migration:sync-metadata-storage_を試してください。

私は現在Symfonyを学んでいて、ガイドに続いていましたが、この問題はどういうわけかsymfony 4.4 PHP 7.2

18
Aziz Bouaouina

https://symfony.com/doc/master/bundles/doctrinemigrationsbundle/index.html

手紙の指示に従ってください

composerはDoctrine/Doctrine-Migrations-Bundleを必要とします

pHP BIN /コンソールDoctrine:移行:生成

pHP BIN /コンソールDOCTRINE:移行:ステータス - SHOWバージョン

pHP BIN /コンソールDoctrine:移行:移行

すべてが私のために働いた

0
belmanh dubien

ここで同じ問題..私は「切れた」それを自宅でこれを試してはいけない!

191行目でvendor\doctrine\migrations\lib\Doctrine\Migrations\Metadata\Storage\TableMetadataStorage.phpでこれらの行を削除しました

$expectedTable = $this->getExpectedTable();

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

その後、make:migrationmigrations:migrateを実行します。成功後の移行の後に機能を貼り付けます。

0
hashtag-assist

.envファイルでは、デフォルト設定パターンを使用できます。

DATABASE_URL=mysql://db-username:[email protected]/db-name
 _

しかし、doctrine.yamlで設定する必要がありますserver_version

構成例として、次のようになります。

doctrine:
    dbal:
        driver: 'pdo_mysql'
        server_version: 'mariadb-10.5.8-focal'
        charset: UTF8
        url: '%env(resolve:DATABASE_URL)%'
 _

私の場合、それはMariadb-10.5.8-focal

Doctrine/Doctrine-Migrations-Bundleをバージョン3にアップグレードした場合、このソリューションは私のために機能しました:

ただ実行される:PHP Bin/Console Doctrine:移行:Sync-Metadata-Storage

0
Samuel Vicent

私はファイルを変更することによってこの問題を一時解決しました:/vendor/doctrine/dbal/lib/doctrine/dbal/schema/comparator.php

メソッドDiffColumnを変更しました。

    // This is a very nasty hack to make comparator work with the legacy json_array type, which should be killed in v3
    if ($this->isALegacyJsonComparison($properties1['type'], $properties2['type'])) {
        array_shift($changedProperties);

        $changedProperties[] = 'comment';
    }

    //////////////////////////////////////////////////////////////////
    // This is my change for fix problem//////////////////////////////
    //////////////////////////////////////////////////////////////////
    if ($properties1['default'] === 'NULL') {
        $properties1['default'] = null;
    }
    if ($properties2['default'] === 'NULL') {
        $properties2['default'] = null;
    }
    /////////////////////////////////////////////////////////////////


    // Null values need to be checked additionally as they tell whether to create or drop a default value.
    // null != 0, null != false, null != '' etc. This affects platform's table alteration SQL generation.
    if (($properties1['default'] === null) !== ($properties2['default'] === null)
        || $properties1['default'] != $properties2['default']) {
        $changedProperties[] = 'default';
    }
 _
0
ildar