'Performance_schema.session_variables' tablosu mevcut değil


299

MySQL'i 5.7.8-rc'ye yükselttikten ve sunucuya kaybettikten sonra hata aldım:

Table 'performance_schema.session_variables' doesn't exist

Bunun için bir çözüm bulamıyorum. Yardım edebilir misin ?


2
Bir diğeri. Görünüşe göre yükseltme işleminiz başarılı olmadı. Yükseltme işlemini tekrar yapmayı (veya) 5.7.8-rcsürümü yeniden yüklemeyi ve DB tam yedeklemesinden geri yüklemeyi düşünebilirsiniz .
Rahul

2
kaçtın mysql_upgradeçekirdek tablolar / dbs herhangi bir değişiklik yapılmadı emin olmak için?
Marc B

evet, yaptım mysql_upgrade, son denemeyi ve tekrar kurmayı veriyorum.
Taz

28
Aynı sorunu yaşadım, çözmek için çalıştırdım mysql_upgrade -u root -p --force, sonra DB sunucusunu yeniden başlattım.
robregonm

Mysql_upgrade komutu çalışmazsa, mysql.performance_schema tablosu bozulmuş olabilir. Bu sorunu yaşadık. Sorunu çözmek için, apt-get purge mariadb-client-10.1 mariadb-common mariadb-server-10.1 komutunu kullanarak veritabanı sunucusunu kaldırdık. Bu, tüm veritabanı ikili, yapılandırma ve veri dosyasını kaldırdı. Sonra veritabanı sunucusunu yeniden kurduk ve veritabanlarını geri aldık. Bundan sonra veritabanı sunucusu sorunsuz koştu
Nadir Latif

Yanıtlar:


227

MySQL_upgrade benim için de çalıştı:

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

Saygılarımızla, MSz.


25
Ben mysqld ( mysql.server restartos x bir homebrew yükleme kullanıyorum beri) yeniden başlatmanız gerekiyordu , bu yüzden bu yardımcı oldu. Aksi takdirde yanlış yapıya sahip session_variables hakkında bir hata aldım.
Geoffrey Wiseman

OS X 10.10.5 (Yosemite) üzerinde Homebrew ile özdeş davranış. Yükseltmeyi yapmak, veritabanını yüklemeye çalışırken Sequel Pro 1.1'deki (4499 derlemesi) bir çökmeyi de giderir.
William Turrell

4
Native table 'performance_schema'.'session_variables' has the wrong structure
stephen

8
Kullanıyorsanız brew servicessunucunuzu ile yeniden başlatabilirsiniz brew services restart mysql.
Frederik Kammer

1
Bu benim için işe yaramıyor, viq. yalnızca gösteri uyumluluğunu etkinleştirmek için gereklidir.
kato2

482

@Robregonm önerilen komut çalıştırdıktan sonra mysql sunucusunda oturum açmayı başardı:

mysql_upgrade -u root -p --force

MySQL sunucusunun yeniden başlatılması gerekiyor.


6
İyi çalıştı. Teşekkürler, sebebinin ne olduğunu bilmek istiyorum.
diguage

2
Access denied for user 'root'@'localhost' (using password: YES) while connecting to the MySQL serverDoğru kök şifresini kullanmama rağmen alıyorum . Herhangi bir yardım?? : - /
sixty4bit

4
@ sixty4bit -p'yi kaldırmayı deneyin
Mike Mellor

1
@NevilleNazerane Kolay php aşina değilim, ama mysql yüklü nerede bulmak ve sonra sadece bir cdm istemi açmak ve dizini bu konuma değiştirmek gerekir. Şimdi komutu çalıştırabilmelisiniz.
Mihai Caracostea

4
@diguage Bunun nedeni, MySQL'in sürüm yükseltmesinin dahili meta veriler için sürüm uyumsuz şemaları tanıtmış olmasıdır. Benim için Homebrew kullanarak bir Mac'te MySQL 5.6'yı MySQL 5.7'ye yükseltiyorum ve MySQL veri dizini değişmedi, bu yüzden yeni sürüm MySQL eski iç meta verileri okuyordu ama ne yapacağımı bilmiyorum - burada gördüğümüz hata bu sorunun bir tezahürü. Sonra mysql_upgradeve bir yeniden başlatma, her şey çalıştı. Bkz. Dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html
Devy

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

gereğince http://bugs.mysql.com/bug.php?id=78159 benim için çalıştı.


1
Bu benim için mükemmel çalıştı! Ve ben çok hantal olurdu mysql sunucusunu yeniden başlatmak zorunda değildi
anu.agg

3
Üzgünüm, bu biraz fazla büyük bir çözüm: bir sinek çekmek için bir bazuka kullanmak gibi. Bu uyumluluk anahtarının çok daha fazla etkisi vardır, hepsini istemeyebilirsiniz.
Tuncay Göncüoğlu

@Tuncay Göncüoğlu bu yan etkilerden bazıları nelerdir?
katzmopolitan

@katzmopolitan Buradan okuyun: dev.mysql.com/doc/refman/5.7/en/… . Değişiklikler çoğunlukla BİLGİ_SCHEMA yönetimi (güvenlik vb.) İle ilgilidir, ancak daha fazlası da vardır.
Tuncay Göncüoğlu

Bu benim için de işe yaradı. Aldığım hata mesajı mysqldump oldu. Bir kez önerilen değişiklik yaptım mysqldump çalıştı. Dökümü yaptıktan sonra show_compatibility_56'yı tekrar KAPALI olarak değiştirdim.
Bryan

23

Yukarıdaki cevapların hiçbiri gerçekte ne olduğunu açıklayamadığından, bu konuya girmeye ve biraz daha ayrıntı vermeye karar verdim.

Evet, çözüm aşağıdaki gibi MySQL Yükseltme komutunu çalıştırmaktır:, mysql_upgrade -u root -p --forceama ne oldu?

Bu sorunun temel nedeni performance_schemaaşağıdakilerden kaynaklanabilecek bozulmadır:

  • Organik yolsuzluk (kaboom, motor hatası, çekirdek sürücüsü sorunu vb.
  • MySQL Patch sırasında yolsuzluk (mysql patch sırasında, özellikle büyük sürüm yükseltmeleri için bunun olması duyulmamış)
  • Basit bir "drop database performance_schema" açıkça bu soruna neden olacak ve bozuk olduğu gibi aynı belirtileri gösterecektir.

Bu sorun bile yama önce veritabanı üzerinde mevcut olmuştur, fakat MySQL 5.7.8 ne oldu özellikle bayrak olmasıdır olabilir show_compatibility_56dönük olmak varsayılan değer değiştirdi ON, varsayılan olarak OFF. Bu bayrak, motorun çeşitli MySQL Sürümlerinde değişkenleri (oturum ve genel) ayarlamak ve okumak için sorgular üzerinde nasıl davrandığını kontrol eder.

MySQL 5.7+ bu değişkenleri on performance_schemayerine okumaya ve saklamaya başladığı için information_schema, bu bayrak ONilk değişikliğe gelince, bu değişikliğin patlama yarıçapını azaltmak ve kullanıcılara değişiklik hakkında bilgi vermek ve buna alışmak için tanıtıldı .

Tamam, ama bağlantı neden başarısız oluyor? Çünkü kullandığınız sürücüye (ve yapılandırmasına) bağlı olarak, veritabanına başlatılan her yeni bağlantı için komutlar çalıştırılabilir (örneğin show variables, örneğin). Bu komutlardan biri bozuk erişmeye çalışabileceğinden performance_schema, tüm bağlantı tam olarak başlatılmadan önce durur.

Yani, özetle, sen olabilir oldu (şimdi söylemek imkansız) performance_schemaya eksik veya yama önce bozulmuş. 5.7.8 yaması, daha sonra motoru değişkenlerinizi okumaya zorladı performance_schema(bunun yerine information_schemabayrağın döndürülmesi nedeniyle okuduğu yer ON). Yana performance_schemabozuktur, bağlantılar başarısız oluyor.

MySQL yükseltmesini çalıştırmak, kesinti süresine rağmen en iyi yaklaşımdır. Bayrağı açmak bir seçenektir, ancak bu iş parçacığına zaten işaret edildiği gibi kendi etkileriyle birlikte gelir.

Her ikisi de çalışmalı, ancak sonuçları ağırlıklandırmalı ve seçimlerinizi bilmelisiniz :)


1
Teşekkürler. Atlamadan ve değişiklik yapmadan önce bu soruna neyin sebep olduğunu merak ediyordum.
Ken Ingram

4

Bu adımları aşağıdakileri olmadan uygulayın -p:

  1. mysql_upgrade -u root
  2. systemctl restart mysqld

Aynı sorunu yaşadım ve işe yarıyor!


Bu çalışıyor! Sadece systemctl restart mysqldişe yaramadı.
Ninja

sonra kullanınsystemctl restart mysql
BitDEVil2K16

1

Altmış4bit sorusu olarak, mysql root kullanıcısı yanlış yapılandırılmış görünüyorsa, mysql resmi kaynağından yapılandırıcı uzantısını yüklemeyi deneyin:

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

Yeni bir kök kullanıcı parolası ayarlamanıza yardımcı olacaktır.

Deponuzu güncellediğinizden emin olun (debian / ubuntu):

apt-get update

0

Benim sistem için sorun hala Mysql 5.6 yüklü olması ve böylece bu kurulumdan mysql_upgrade.exe 5.7 yerine biri çağrılıyor oldu. Şuraya git C:\Program Files\MySQL\MySQL Server 5.7\binve çalıştır.\mysql_upgrade.exe -u root


0

mysql_upgrade -u root -p --forceKomutu kullanırken Bu hatayı alırsanız:

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

sudokomuttan önce ekleyin . Bu benim için çalıştı ve sorunumu çözdüm. Yani: sudo mysql_upgrade -u root -p --force:)


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.