심포니 만들기:마이그레이션: 메타데이터 저장소가 최신이 아닙니다. 이 문제를 해결하려면 sync-metadata-storage 명령을 실행하십시오.
할 마다 이 합니다.php bin/console make:migration
아니 심지어는doctrine:migration status
내가 시도할 때doctrine:migration:sync-metadata-storage
여전히 같은 오류 메시지가 표시됩니다.
저는 현재 심포니를 배우고 있고 가이드를 따르고 있지만 왠지 심포니 4.4 php 7.2가 문제가 됩니다.
.env의 DATABASE_URL을 에서 변경해 보십시오.
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
Symphony 설명서에서는 버전 번호를 지정하되 데이터베이스 유형은 지정하지 않는 것이 좋습니다.
"server_version(MySQL 5.7을 사용하는 경우 5.7 등)을 포함하여 구성할 수 있는 config/session/session.dll의 옵션이 더 많아 독트린의 작동 방식에 영향을 미칠 수 있습니다." https://symfony.com/doc/current/doctrine.html
원답: https://github.com/doctrine/DoctrineMigrationsBundle/issues/337#issuecomment-645390496
MariaDB의 경우 전체 semver 호환 버전이 필요합니다.마이너. 마이너, 패치.를 으로써.mysql --version
현재 실행 중인 버전이 정확하게 표시됩니다.
서버 버전 앞에 mariadb-x.x.x를 붙이면 충분했습니다.그것은 문제를 해결했습니다.
"MariaDB 데이터베이스를 실행하는 경우, serverVersion 앞에 mariadb-(예: mariadb-10.2.12)를 붙여야 합니다."
변경하면 작동합니다.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
저의 경우, URL에서 ?serverVersion=5.2를 제거하면 작동합니다.
당신은 그것을 바꿔야 합니다.serverVersion=5.7
.env에서serverVersion=mariadb-10.4.8
심포니 5.1
다음과 같은 정보가 있는 경우:
잘못된 플랫폼 버전 "maridb-10.4.13"이 지정되었습니다.플랫폼 버전은 "<major_version>" 형식으로 지정해야 합니다.<syslog_version>.<syslog_version>.
둘 중 하나만 하면 됩니다.
구성/설정얌
doctrine:
dbal:
server_version: 'mariadb-10.4.13'
또는 구성 파일 .env에 있습니다.
DATABASE_URL=mysql://databaseUsername:UserPassword@localhost:3306/databaseName?serverVersion=mariadb-10.4.13
독트린 마이그레이션 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
추가했습니다.serverVersion=mariadb-10.4.11
데이터베이스 URL 문자열에서 작동했습니다.
.env 파일에서 "?serverVersion=5.7"을 제거했을 때 함께 작동했습니다.
원본: DATABASE_URL="mysql://root:@127.0.0.1:3306/center?serverVersion=5.7"
DATABASE_URL="mysql://root:@127.0.0.1:3306/center"로 이동합니다.
바꾸다
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
file.env 버전을 합니다.DATABASE_URL=mysql://root:@127.0.0.1:3306/DB_Name
저는 새로운 버전의 독트린 마이그레이션 3.0 때문에 같은 문제를 가지고 있습니다.
php bin/console debug:config DoctrineMigrationsBundle
https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html
/vendor/docrine/dbal/lib/Docrine/DB 파일을 수정하여 이 문제를 임시로 해결했습니다.AL/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';
}
https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html
문자 그대로의 지시에 따르다
작곡가는 교리/이론-이행-이론이 필요합니다.
php bin/migration 독트린:이행:생성
php bin/migrations 독트린: 마이그레이션: 상태 --show-migrations
php bin/migration 독트린: 마이그레이션: 삭제
모든 것이 나에게 효과가 있었습니다.
donctrine/docrine-migrations-bundle을 버전 3으로 업그레이드한 경우, 이 솔루션은 다음과 같은 이점을 제공합니다.
그냥 실행: php bin/console 독트린: 마이그레이션: sync-metadata-storage
여기서도 같은 문제가..저는 그것을 "좋아"했지만 집에서 이것을 시도하지 마세요!
는 을제니다습거했에서 이 을 삭제했습니다.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:db-password@127.0.0.1/db-name
그러나 trinction에서 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-focial입니다.
데이터베이스 줄의 .env 파일에서 데이터베이스 이름 뒤에 있는 모든 항목을 제거합니다.이것이 문제를 해결할 것입니다!
저는 이 모든 해결책을 시도했습니다.Symfony 6.x 버전에서는 이러한 솔루션이 모두 작동하지 않습니다.하지만 난 제거했어요symfony/web-profiler-bundle
패키지와 모든 것이 지금은 괜찮습니다.사실 프로파일러는 필요 없어요감사합니다, 심포니.저는 당신이 앞으로 저의 다른 날들을 보내길 바랍니다.
조만간 심포니 프레임워크 때문에 PHP에서 탈출할 것입니다.
이 명령을 실행하십시오.
symphony 콘솔 캐시: 지우기
그것은 나를 위해 문제를 해결합니다.
내 (MariaDB 10.7.3) 설?serverVersion=mariadb-10.7.3
도움이 되지 않았습니다.
대신 MariaDB 10.7.3을 제거하고 MySQL Community 8.0.28을 설치한 다음 DATABASE_URL을?serverVersion=8.0.28
MariaDB에서 MySQL Community로 전환한 후에야 이 문제를 해결할 수 있었습니다.
언급URL : https://stackoverflow.com/questions/62412312/symfony-makemigration-the-metadata-storage-is-not-up-to-date-please-run-the
'bestsource' 카테고리의 다른 글
R 마크다운, SQL 코드 청크가 구문 오류를 생성합니다. (0) | 2023.08.12 |
---|---|
스크롤 보기를 특정 편집 텍스트로 프로그래밍 방식으로 스크롤하는 방법이 있습니까? (0) | 2023.08.12 |
JavaScript로 브라우저에서 Android 전화기 회전 감지 (0) | 2023.08.12 |
봄에 어떤 종류의 "이벤트 버스"를 이용합니까?빌트인, 리액터, 아카? (0) | 2023.08.12 |
Jquery 코드는 머리글에 넣어야 합니까 아니면 바닥글에 넣어야 합니까? (0) | 2023.08.12 |