sourcecode

데이터베이스 스키마가 null 가능한 열에 대해 동기화되지 않았습니다.

codebag 2023. 8. 11. 21:47
반응형

데이터베이스 스키마가 null 가능한 열에 대해 동기화되지 않았습니다.

방금 알았습니다doctrine:schema:validate오류 발생:

[오류] 데이터베이스 스키마가 현재 매핑 파일과 동기화되지 않았습니다.

그래서 저는 노력했습니다.doctrine:schema:update --force --complete --dump-sql성공적이었습니다.

다음 SQL 문이 실행됩니다.

 ALTER TABLE user CHANGE last_login `last_login` DATETIME DEFAULT NULL;

데이터베이스 스키마를 업데이트하는 중...

 1 query was executed

[OK] 데이터베이스 스키마가 성공적으로 업데이트되었습니다!

하지만 내가 뛰면,doctrine:schema:validate다시 스키마가 동기화되지 않은 것과 관련하여 동일한 오류를 발생시킵니다.

데이터베이스 테이블 필드 정의를 확인했는데 보기에 좋습니다.

`last_login` datetime DEFAULT NULL

열은 다음과 같이 정의됩니다.

/**
 * @ORM\Column(type="datetime", nullable=true)
 */
private $last_login;

는 이것을 찾았습니다: https://github.com/doctrine/dbal/pull/2825

아이디어 있어요?

당신의config.yml또는doctrine.yamlSymfony 버전에 따라 데이터베이스 서버의 적절한 서버 버전을 설정합니다.예:

doctrine:
    # …
    dbal:
        # …
        server_version: mariadb-10.2.15

참고:mariadb접두어

MariaDB 설치에서 서버 버전을 파생하려고 할 때 Dutrin이 올바른 MySQL API 버전을 결정하는 데 문제가 있는 것 같습니다.

구성에서 MySQL 버전 번호를 정의하는 데 도움이 될 수 있습니다.예를 들어 Debian Stretch에서 MariaDB를 사용할 때와 같은 여러 프로젝트에서 도움이 되었습니다.

# app/config/config.yml

doctrine:
    # …
    dbal:
        # …
        server_version: 5.7

이렇게 하면 독트린이 MySQL 버전의 자동 탐지를 건너뛰고 최신 API를 사용하는 효과가 있습니다.

.env.local의 DATABASE_URL을 변경하여 작동했습니다.이전(작동하지 않음)

DATABASE_URL=mysql://root:password@127.0.0.1:3306/db?serverVersion=10.4.12

이후(최종적으로 작동)

DATABASE_URL=mysql://root:password@127.0.0.1:3306/db?serverVersion=mariadb-10.4.12

언급URL : https://stackoverflow.com/questions/51854778/database-schema-is-not-in-sync-for-a-nullable-column

반응형