Meta veri kilidini beklediğini gösterdiği için tablo bırakılamıyor


11

Bir tablo bırakmaya çalışıyoruz, ancak askıda kalıyor ve 'İŞLEMCİ GÖSTER' komutunu gördüğümüzde 'meta veri kilidini bekliyor' olarak görünüyor. Hatta o tablo üzerinde herhangi bir işlem yapamıyoruz. Bunu nasıl çözeceğini bilen var mı?

Yanıtlar:


8

Bir InnoDB tablosuna SELECT veya DML (INSERT, UPDATE, DELETE) aracılığıyla erişiliyorsa, bir meta veri kilidi beklemeniz gerekir.

MetaData Kilitleme ile ilgili MySQL Belgelerine göre :

İşlemin serileştirilmesini sağlamak için, sunucunun bir oturumun başka bir oturumda tamamlanmamış bir işlemde kullanılan bir tablo üzerinde veri tanımı dili (DDL) ifadesi gerçekleştirmesine izin vermemesi gerekir. Sunucu bunu bir işlemde kullanılan tablolarda meta veri kilitleri alarak ve işlem bitene kadar bu kilitlerin bırakılmasını erteleyerek başarır. Tablodaki bir meta veri kilidi, tablonun yapısındaki değişiklikleri önler. Bu kilitleme yaklaşımı, bir oturumda bir işlem tarafından kullanılan bir tablonun, işlem bitene kadar diğer oturumlar tarafından DDL deyimlerinde kullanılamayacağı anlamına gelir.

Olduğu söyleniyor, başka bir DB oturumu masada kilitleri olup olmadığını belirlemek gerekir. Böyle bir oturum tamamlanmamış bir işlemse, bekletmenin nerede olabileceği vardır.

Disk alanına hızlıca geri dönmeniz gerekiyorsa, çalıştırabilirsiniz TRUNCATE TABLE.

ÖNERİ

Aşağıdaki gibi bırakmaya çalışmadan önce tabloyu yeniden adlandırmayı deneyin:

ALTER TABLE mydb.mytable RENAME mydb.mytabletodrop;
TRUNCATE TABLE mydb.mytabletodrop;
DROP TABLE mydb.mytabletodrop;

Öneri bizim için işe yaramadı. Bunun yerine ALTER TABLE fooyeniden adlandırmasında "Tablo meta veri kilidi bekleniyor" footodrop
mesajı alıyoruz

@Motin all, bir veya daha fazla DB Connections hala tabloya erişiyor olmasıdır foo. Tüm bu bağlantılar yapıldıktan sonra, ALTER TABLEdevam edebilir.
RolandoMySQLDBA

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.