source

도커 업데이트 후 Mysql 테이블이 없음: "TableName이 엔진에 없습니다."

gigabyte 2022. 12. 18. 08:35
반응형

도커 업데이트 후 Mysql 테이블이 없음: "TableName이 엔진에 없습니다."

최근 도커 업데이트로 인해 (일부만)MariaDB 내의 InnoDB 테이블에 액세스할 수 없습니다.이해:

#1932 - Table 'dbname.SomeTableName' doesn't exist in engine

액세스하려고 할 때(표 목록에 표시됨).Docker(및 이미지)는 이전에 문제없이 업데이트했습니다.DB 파일 및 권한은 정상으로 표시됩니다.

백업에서 누락된 테이블(최대 35개 중 4개)만 다시 생성할 수 있지만 삭제하려고 하면 다음과 같은 메시지가 나타납니다.

#1347 - 'dbname.SomeTableName' is not VIEW

도커 이미지를 사용하고 있습니다.mariadb:10.2(MariaDB-10.2.12+maria~jessie)는 로컬 Docker-for-Mac 개발 환경의 일부로서 영속적인 데이터 스토리지를 위한 바인드 마운트를 갖추고 있습니다.docker-compose.yml 파일은 다음과 같습니다.

mysql: image: mariadb:10.2 volumes: - ./data/mysql:/var/lib/mysql

이 에러는 지금까지 발생한 적이 없기 때문에 액세스 불가능한 테이블을 덤프 또는 내보낼 수 없습니다.복원 또는 복구(또는 삭제)할 수 있는 방법이 있습니까?데이터베이스 전체를 재작성할 필요는 없습니다.

이 문제를 해결하려면 로컬에 커스텀 mysql 설정을 사용하고 다음을 추가합니다.

[mysqld]
lower_case_table_names=1

위의 텍스트를 포함하는 파일을 다음과 같이 mysql conf.d 디렉토리에 마운트하면 기본 설정을 변경하지 않고 이를 수행할 수 있습니다.

volumes:
  - ./mysql_local.cnf:/etc/mysql/conf.d/mysql_local.cnf:ro

언급URL : https://stackoverflow.com/questions/49041690/mysql-tables-missing-after-docker-update-tablename-doesnt-exist-in-engine

반응형