[mysql] ‘performance_schema.session_variables’테이블이 존재하지 않습니다

MySQL을 5.7.8-rc로 업그레이드하고 서버에 로그인 한 후 오류가 발생했습니다.

Table 'performance_schema.session_variables' doesn't exist

이에 대한 해결책을 찾을 수 없습니다. 도울 수 있니 ?



답변

mysql_upgrade도 저에게 효과적이었습니다.

# mysql_upgrade -u root -p --force
# systemctl restart mysqld

감사합니다.


답변

@robregonm 제안 명령을 실행 한 후 mysql 서버에 로그온 할 수있었습니다.

mysql_upgrade -u root -p --force

MySQL 서버를 다시 시작해야합니다.


답변

mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;

에 따라 http://bugs.mysql.com/bug.php?id=78159 날 위해 일했습니다.


답변

위의 답변 중 실제로 어떤 일이 발생했는지 설명하지 않았 으므로이 문제에 대해 더 자세히 설명하기로 결정했습니다.

예, 해결책은 다음과 같이 MySQL 업그레이드 명령을 실행하는 것입니다. mysql_upgrade -u root -p --force 것입니다.

이 문제의 근본 원인은 다음의 원인 performance_schema일 수있는 의 손상입니다 .

  • 유기적 손상 (카붐, 엔진 버그, 커널 드라이버 문제 등)
  • mysql 패치 중 손상 (특히 주요 버전 업그레이드의 경우 mysql 패치 중에이 문제가 발생하지 않은 것은 아닙니다)
  • 간단한 “drop database performance_schema”는 분명히이 문제를 야기하며 손상된 것처럼 동일한 증상을 나타냅니다.

이 문제는 패치 이전에도 데이터베이스에 있었을 수도 있지만 MySQL 5.7.8에서 발생한 것은 특히 플래그 show_compatibility_56가 기본값 ON을 기본값으로 설정하지 않고OFF 입니다. 이 플래그는 다양한 MySQL 버전에서 변수 (세션 및 전역)를 설정하고 읽는 쿼리에서 엔진이 작동하는 방식을 제어합니다.

MySQL 5.7+는 on performance_schema대신 이러한 변수를 읽고 저장하기 시작했기 information_schema때문에이 플래그는 ON첫 번째 릴리스에서 도입 되어이 변경의 폭발 반경을 줄이고 사용자에게 변경에 대해 알리고 익숙해 지도록했습니다.

하지만 연결이 실패하는 이유는 무엇입니까? 사용중인 드라이버 (및 구성)에 따라 데이터베이스에 시작된 모든 새 연결 (예 : show variables등)에 대해 명령을 실행하게 될 수 있습니다 . 이러한 명령 중 하나가 손상된 액세스를 시도 할 수 있기 때문에performance_schema 있으므로 전체 연결이 완전히 시작되기 전에 전체 연결이 중단됩니다.

그래서, 요약, 당신은 할 수 있었다 (지금 얘기하는 것은 불가능) performance_schema중 하나를 없거나 패치하기 전에 손상. 5.7.8 패치는 엔진이 변수를 읽도록 강제했습니다 performance_schema( information_schema플래그가 바뀌어 변수를 읽는 대신 ON). 때문에 performance_schema손상되었습니다, 연결이 실패합니다.

다운 타임에도 불구하고 MySQL 업그레이드를 실행하는 것이 가장 좋습니다. 플래그를 설정하는 것은 하나의 옵션이지만,이 스레드에서 이미 지적한대로 자체 의미가 있습니다.

둘 다 작동하지만 결과에 가중치를 부여하고 선택 사항을 알고 있어야합니다. 🙂


답변

없이 다음 단계를 수행하십시오 -p.

  1. mysql_upgrade -u root
  2. systemctl restart mysqld

나는 같은 문제가 있었고 작동합니다!


답변

sixty4bit 질문으로, mysql 루트 사용자가 잘못 구성된 것 같으면 mysql 공식 소스에서 구성 프로그램 확장을 설치하십시오.

https://dev.mysql.com/downloads/repo/apt/

새로운 루트 사용자 암호를 설정하는 데 도움이됩니다.

저장소 (debian / ubuntu)를 업데이트하십시오.

apt-get update


답변

내 시스템의 문제는 여전히 Mysql 5.6을 설치했기 때문에 해당 설치의 mysql_upgrade.exe가 5.7 대신 사용되었다는 것입니다. 탐색 C:\Program Files\MySQL\MySQL Server 5.7\bin및 실행.\mysql_upgrade.exe -u root