Waiting for table metadata lock
drop table tableA name
SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10
Pokud je toto váš stůl, přejděte na tento odkaz
máte implicitní zablokování. Zabijte ostatní transakce, abyste uvolnili drop, nebo zabijte drop, abyste uvolnili ostatní transakce.
Můžete použít KILL thread_id, v sql_plus.
Přidávám další informace, protože jsem přišel s další zajímavou zkušeností.
Metadata
K mrtvým zámkům může stejně dojít mezi operací ddl na dané tabulce (drop
, alter
...) a výběr dotaz na tu tabulku.
Ano, select
.
Pokud tedy přejdete přes kurzor v mysql (nebo php, například pomocí pdo::fetch
) a spustíte příkaz ddl na stejné tabulce (tabulkách), dostanete se do uváznutí.
Jedním z řešení tohoto atypického scénáře je uvolnění implicitních zámků pomocí commit
příkaz systematicky po úplném načtení jakéhokoli příkazu select.