コマンドラインを使って移行しようとするたびにこの問題を取得し続けます:_php bin/console make:migration
_または_doctrine:migration status
_私は私に言うように_doctrine:migration:sync-metadata-storage
_を試してください。
私は現在Symfonyを学んでいて、ガイドに続いていましたが、この問題はどういうわけかsymfony 4.4 PHP 7.2
https://symfony.com/doc/master/bundles/doctrinemigrationsbundle/index.html
手紙の指示に従ってください
composerはDoctrine/Doctrine-Migrations-Bundleを必要とします
pHP BIN /コンソールDoctrine:移行:生成
pHP BIN /コンソールDOCTRINE:移行:ステータス - SHOWバージョン
pHP BIN /コンソールDoctrine:移行:移行
すべてが私のために働いた
ここで同じ問題..私は「切れた」それを自宅でこれを試してはいけない!
191行目でvendor\doctrine\migrations\lib\Doctrine\Migrations\Metadata\Storage\TableMetadataStorage.php
でこれらの行を削除しました
$expectedTable = $this->getExpectedTable();
if ($this->needsUpdate($expectedTable) !== null) {
throw MetadataStorageError::notUpToDate();
}
その後、make:migration
とmigrations:migrate
を実行します。成功後の移行の後に機能を貼り付けます。
.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
私はファイルを変更することによってこの問題を一時解決しました:/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';
}
_