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
Om detta är din tabell, se denna länk
du har ett implicit dödläge. Döda de andra transaktionerna för att släppa släppet, eller döda släppet för att släppa de andra transaktionerna.
Du kan använda KILL thread_id, i sql_plus.
Jag lägger till ytterligare information eftersom jag kom på en annan intressant upplevelse.
Metadata
Döda låsningar kan också inträffa mellan en ddl-operation på en given tabell (drop
, alter
...) och ett välj fråga på den tabellen.
Ja, select
.
Så, om du loopar över en markör i mysql (eller php, till exempel med pdo::fetch
), och du kör en ddl-sats på samma tabell(er), kommer du att få ett dödläge.
En lösning på detta atypiska scenario är att släppa de implicita låsen med en commit
sats systematiskt efter att valfri sats har hämtats helt.