Programing

'performance_schema.session_variables'테이블이 존재하지 않습니다

lottogame 2020. 3. 18. 08:00
반응형

'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 Upgrade 명령을 실행하는 mysql_upgrade -u root -p --force것입니다.

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

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

이 문제는 패치 이전에도 데이터베이스에 있었을 수도 있지만 MySQL 5.7.8에서 발생한 것은 특히 플래그 show_compatibility_56가 기본값이 기본 설정에서으로 변경 되었다는 ONOFF입니다. 이 플래그는 다양한 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


mysql_upgrade -u root -p --force명령 을 사용하는 동안 이 오류가 발생하는 경우

Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13

sudo명령 앞에를 추가하십시오 . 그것은 나를 위해 일했고 내 문제를 해결했습니다. 그래서, 그것은 sudo mysql_upgrade -u root -p --force:)


때로는 mysql_upgrade -u root -p --force충분하지 않아서

이 질문을 참조하십시오 : 'performance_schema.session_variables'테이블존재하지 않습니다

그것에 따르면 :

  1. cmd를여십시오
  2. cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
  3. mysql_upgrade -u root -p --force

참고 URL : https://stackoverflow.com/questions/31967527/table-performance-schema-session-variables-doesnt-exist

반응형