Inny. Wygląda na to, że aktualizacja nie powiodła się. Możesz rozważyć ponowne wykonanie aktualizacji (lub) ponowną instalację 5.7.8-rcwersji i przywrócenie z pełnej kopii zapasowej DB.
Rahul,
2
czy starałeś mysql_upgradesię upewnić, że dokonano jakichkolwiek zmian w podstawowych tabelach / dbs?
Marc B,
tak, zrobiłem mysql_upgrade, próbuję ponownie zainstalować go ponownie. Jeśli to nie zadziała, obniżę wersję do wersji 5.6
Taz
28
Wystąpił ten sam problem, aby go rozwiązać, uruchamiam mysql_upgrade -u root -p --force, a następnie ponownie uruchamiam serwer DB.
robregonm,
Jeśli polecenie mysql_upgrade nie działa, oznacza to, że tabela mysql.performance_schema mogła zostać uszkodzona. Mieliśmy ten problem. Aby rozwiązać problem, usunęliśmy serwer bazy danych za pomocą polecenia: apt-get purge mariadb-client-10.1 mariadb-common mariadb-server-10.1. Spowodowało to usunięcie wszystkich plików binarnych, konfiguracyjnych i danych z bazy danych. Następnie ponownie zainstalowaliśmy serwer bazy danych i zaimportowaliśmy bazy danych. Następnie serwer bazy danych działał bez problemów
Musiałem zrestartować mysqld ( mysql.server restartponieważ używam instalacji homebrew na systemie OS X), więc było to pomocne. W przeciwnym razie wystąpił błąd dotyczący nieprawidłowej struktury zmiennych_sesji.
Geoffrey Wiseman,
Identyczne zachowanie z Homebrew na OS X 10.10.5 (Yosemite). Wykonanie aktualizacji naprawia także awarię w Sequel Pro 1.1 (kompilacja 4499) podczas próby załadowania bazy danych.
William Turrell,
4
Native table 'performance_schema'.'session_variables' has the wrong structure
Stephen
8
Jeśli używasz brew services, możesz ponownie uruchomić serwer za pomocą brew services restart mysql.
Frederik Kammer
1
To nie działa dla mnie, prawidłową odpowiedź udziela viq. potrzebne jest tylko, aby umożliwić kompatybilność programu.
kato2
482
Byłem w stanie zalogować się na serwerze mysql po uruchomieniu polecenia @robregonm zasugerował:
To działało dobrze. Dzięki, chcę wiedzieć, jaki jest tego powód.
diguage
2
Dostaję się, Access denied for user 'root'@'localhost' (using password: YES) while connecting to the MySQL servermimo że używam poprawnego hasła roota. Jakaś pomoc?? : - /
sixty4bit
4
@ sixty4bit spróbuj usunąć -p
Mike Mellor,
1
@NevilleNazerane Nie jestem zaznajomiony z łatwym php, ale powinieneś być w stanie zlokalizować, gdzie instalowany jest mysql, a następnie po prostu otworzyć monit cdm i zmienić katalog na tę lokalizację. Teraz powinieneś być w stanie uruchomić polecenie.
Mihai Caracostea
4
@diguage Powodem jest to, że aktualizacja wersji MySQL wprowadziła schematy niezgodne z wersją dla wewnętrznych metadanych. Dla mnie aktualizuję MySQL 5.6 do MySQL 5.7 na Macu za pomocą Homebrew, a katalog danych MySQL pozostał niezmieniony, więc nowa wersja MySQL odczytywała stare wewnętrzne metadane, ale nie wiem, co robić - ten błąd, który tu widzieliśmy, to manifest tego problemu. Po mysql_upgradeponownym uruchomieniu wszystko działało. Zobacz: dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html
Devy
110
mysql -u app -p
mysql>set@@global.show_compatibility_56=ON;
To działało idealnie dla mnie! I nie musiałem restartować serwera mysql, który byłby tak uciążliwy
anu.agg
3
Przepraszam, jest to rozwiązanie nieco za duże: jak użycie bazooki do wystrzelenia muchy. Ten przełącznik zgodności ma o wiele więcej efektów, możesz nie chcieć wszystkich z nich.
Tuncay Göncüoğlu
@Tuncay Göncüoğlu jakie są niektóre z tych skutków ubocznych?
katzmopolitan
@katzmopolitan Przeczytaj tutaj: dev.mysql.com/doc/refman/5.7/en/… . Zmiany dotyczą głównie obsługi INFORMACJE_SCHEMA (bezpieczeństwo itp.), Ale jest ich więcej.
Tuncay Göncüoğlu
To też działało dla mnie. Komunikat o błędzie, który otrzymałem, pochodzi z mysqldump. Po dokonaniu sugerowanej zmiany mysqldump działał. Kiedy miałem zrzut, po prostu zmieniłem show_compatibility_56 z powrotem na OFF.
Bryan,
23
Ponieważ żadna z powyższych odpowiedzi tak naprawdę nie wyjaśnia tego, co się stało, postanowiłem wtrącić się i przedstawić kilka szczegółów tego problemu.
Tak, rozwiązaniem jest uruchomienie polecenia MySQL Upgrade w następujący sposób: mysql_upgrade -u root -p --forceale co się stało?
Podstawową przyczyną tego problemu jest uszkodzenie performance_schema, które może być spowodowane przez:
Korupcja organiczna (ilość woluminów w kaboomie, błąd silnika, problem ze sterownikiem jądra itp.)
Korupcja podczas łatki mysql (często zdarza się, że dzieje się to podczas łatki mysql, szczególnie w przypadku głównych aktualizacji wersji)
Prosty „upuść bazę danych Performance_schema” oczywiście spowoduje ten problem i będzie miał takie same objawy, jak gdyby był uszkodzony
Ten problem mógł występować w Twojej bazie danych nawet przed łatką, ale to, co wydarzyło się w MySQL 5.7.8, polega na tym, że flaga show_compatibility_56zmieniła domyślną wartość z ONdomyślnej zmiany na OFF. Ta flaga kontroluje zachowanie silnika w zapytaniach dotyczących ustawiania i odczytu zmiennych (sesyjnych i globalnych) w różnych wersjach MySQL.
Ponieważ MySQL 5.7+ zaczął odczytywać i przechowywać te zmienne performance_schemazamiast na information_schema, ta flaga została wprowadzona tak, jak ONw pierwszych wydaniach, aby zmniejszyć promień wybuchu tej zmiany i poinformować użytkowników o zmianie i przyzwyczaić się do niej.
OK, ale dlaczego połączenie się nie udaje? Ponieważ w zależności od używanego sterownika (i jego konfiguracji) może on uruchamiać polecenia dla każdego nowego połączenia inicjowanego z bazą danych ( show variablesna przykład). Ponieważ jedno z tych poleceń może próbować uzyskać dostęp do uszkodzonego performance_schema, całe połączenie zostaje przerwane, zanim zostanie w pełni zainicjowane.
Podsumowując, być może (teraz nie można stwierdzić) performance_schemabrakowało lub było uszkodzone przed łataniem. Łatka do 5.7.8 następnie zmusiła silnik do odczytania zmiennych performance_schema(zamiast, z information_schemaktórego odczytuje je z powodu zmiany flagi ON). Ponieważ performance_schemazostał uszkodzony, połączenia nie działają.
Uruchamianie aktualizacji MySQL jest najlepszym rozwiązaniem, pomimo przestoju. Włączenie flagi jest jedną z opcji, ale ma ona swój własny zestaw implikacji, jak już wskazano w tym wątku.
Oba powinny działać, ale rozważ konsekwencje i poznaj swoje wybory :)
To działa! Tylko systemctl restart mysqldnie działało.
Ninja
następnie użyjsystemctl restart mysql
BitDEVil2K16
1
Jako sześćdziesięciobitowe pytanie, jeśli użytkownik root mysql wygląda na źle skonfigurowanego, spróbuj zainstalować rozszerzenie konfiguratora z oficjalnego źródła mysql:
W moim systemie problem polegał na tym, że wciąż miałem zainstalowany Mysql 5.6, dlatego zamiast tej dla 5.7 wywołano mysql_upgrade.exe z tej instalacji. Przejdź do C:\Program Files\MySQL\MySQL Server 5.7\bini uruchom.\mysql_upgrade.exe -u root
5.7.8-rc
wersji i przywrócenie z pełnej kopii zapasowej DB.mysql_upgrade
się upewnić, że dokonano jakichkolwiek zmian w podstawowych tabelach / dbs?mysql_upgrade
, próbuję ponownie zainstalować go ponownie. Jeśli to nie zadziała, obniżę wersję do wersji 5.6mysql_upgrade -u root -p --force
, a następnie ponownie uruchamiam serwer DB.Odpowiedzi:
Mysql_upgrade również dla mnie działał:
Pozdrawiam, MSz.
źródło
mysql.server restart
ponieważ używam instalacji homebrew na systemie OS X), więc było to pomocne. W przeciwnym razie wystąpił błąd dotyczący nieprawidłowej struktury zmiennych_sesji.Native table 'performance_schema'.'session_variables' has the wrong structure
brew services
, możesz ponownie uruchomić serwer za pomocąbrew services restart mysql
.Byłem w stanie zalogować się na serwerze mysql po uruchomieniu polecenia @robregonm zasugerował:
Wymagane jest ponowne uruchomienie serwera MySQL.
źródło
Access denied for user 'root'@'localhost' (using password: YES) while connecting to the MySQL server
mimo że używam poprawnego hasła roota. Jakaś pomoc?? : - /mysql_upgrade
ponownym uruchomieniu wszystko działało. Zobacz: dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.htmlzgodnie z http://bugs.mysql.com/bug.php?id=78159 pracował dla mnie.
źródło
Ponieważ żadna z powyższych odpowiedzi tak naprawdę nie wyjaśnia tego, co się stało, postanowiłem wtrącić się i przedstawić kilka szczegółów tego problemu.
Tak, rozwiązaniem jest uruchomienie polecenia MySQL Upgrade w następujący sposób:
mysql_upgrade -u root -p --force
ale co się stało?Podstawową przyczyną tego problemu jest uszkodzenie
performance_schema
, które może być spowodowane przez:Ten problem mógł występować w Twojej bazie danych nawet przed łatką, ale to, co wydarzyło się w MySQL 5.7.8, polega na tym, że flaga
show_compatibility_56
zmieniła domyślną wartość zON
domyślnej zmiany naOFF
. Ta flaga kontroluje zachowanie silnika w zapytaniach dotyczących ustawiania i odczytu zmiennych (sesyjnych i globalnych) w różnych wersjach MySQL.Ponieważ MySQL 5.7+ zaczął odczytywać i przechowywać te zmienne
performance_schema
zamiast nainformation_schema
, ta flaga została wprowadzona tak, jakON
w pierwszych wydaniach, aby zmniejszyć promień wybuchu tej zmiany i poinformować użytkowników o zmianie i przyzwyczaić się do niej.OK, ale dlaczego połączenie się nie udaje? Ponieważ w zależności od używanego sterownika (i jego konfiguracji) może on uruchamiać polecenia dla każdego nowego połączenia inicjowanego z bazą danych (
show variables
na przykład). Ponieważ jedno z tych poleceń może próbować uzyskać dostęp do uszkodzonegoperformance_schema
, całe połączenie zostaje przerwane, zanim zostanie w pełni zainicjowane.Podsumowując, być może (teraz nie można stwierdzić)
performance_schema
brakowało lub było uszkodzone przed łataniem. Łatka do 5.7.8 następnie zmusiła silnik do odczytania zmiennychperformance_schema
(zamiast, zinformation_schema
którego odczytuje je z powodu zmiany flagiON
). Ponieważperformance_schema
został uszkodzony, połączenia nie działają.Uruchamianie aktualizacji MySQL jest najlepszym rozwiązaniem, pomimo przestoju. Włączenie flagi jest jedną z opcji, ale ma ona swój własny zestaw implikacji, jak już wskazano w tym wątku.
Oba powinny działać, ale rozważ konsekwencje i poznaj swoje wybory :)
źródło
Wykonaj następujące kroki bez
-p
:mysql_upgrade -u root
systemctl restart mysqld
Miałem ten sam problem i działa!
źródło
systemctl restart mysqld
nie działało.systemctl restart mysql
Jako sześćdziesięciobitowe pytanie, jeśli użytkownik root mysql wygląda na źle skonfigurowanego, spróbuj zainstalować rozszerzenie konfiguratora z oficjalnego źródła mysql:
https://dev.mysql.com/downloads/repo/apt/
Pomoże Ci to ustawić nowe hasło użytkownika root.
Zaktualizuj swoje repozytorium (debian / ubuntu):
źródło
W moim systemie problem polegał na tym, że wciąż miałem zainstalowany Mysql 5.6, dlatego zamiast tej dla 5.7 wywołano mysql_upgrade.exe z tej instalacji. Przejdź do
C:\Program Files\MySQL\MySQL Server 5.7\bin
i uruchom.\mysql_upgrade.exe -u root
źródło
Jeśli podczas korzystania z
mysql_upgrade -u root -p --force
polecenia pojawia się ten błąd:po prostu dodaj
sudo
przed poleceniem. To działało dla mnie i rozwiązałem mój problem. To jest:sudo mysql_upgrade -u root -p --force
:)źródło
czasami
mysql_upgrade -u root -p --force
to nie wystarczyzapoznaj się z tym pytaniem: Tabela „performance_schema.session_variables” nie istnieje
zgodnie z nim:
cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
mysql_upgrade -u root -p --force
źródło