錯誤提示的意思,很明顯,是因爲這條語句被鎖住了。所以釋放這個鎖
我們可以到information_schema中查詢
解釋:information_schema這張數據表保存了MySQL服務器所有數據庫的信息。
如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。
再簡單點,這臺MySQL服務器上,到底有哪些數據庫、各個數據庫有哪些表,每張表的字段類型是什
麼,各個數據庫要什麼權限才能訪問,等等信息都保存在information_schema表裏面。
我們可以用下面三張表來查原因:
innodb_trx 當前運行的所有事務
innodb_locks 當前出現的鎖
innodb_lock_waits 鎖等待的對應關係
- 查看數據庫鎖id
- 圖中紅色語句爲佔用系統資源的語句,我們需要殺掉這個鎖,執行 kill 線程id號。上面這條記錄的id爲319618246
所以我們執行:kill 319618246即可
執行之後:
其他的記錄不需要關注,因爲其他的記錄狀態爲“RUNNING” 即正在執行的事務,並沒有鎖
擴展:表結構
desc information_schema.innodb_locks;
Field | Type | Null | Key | Default | Remark |
---|---|---|---|---|---|
lock_id | varchar(81) | NO | 鎖ID | ||
lock_trx_id | varchar(18) | NO | 擁有鎖的事務ID | ||
lock_mode | varchar(32) | NO | 鎖模式 | ||
lock_type | varchar(32) | NO | 鎖類型 | ||
lock_table | varchar(1024) | NO | 被鎖的表 | ||
lock_index | varchar(1024) | YES | NULL | 被鎖的索引 | |
lock_space | bigint(21) unsigned | YES | NULL | 被鎖的表空間號 | |
lock_page | bigint(21) unsigned | YES | NULL | 被鎖的頁號 | |
lock_rec | bigint(21) unsigned | YES | NULL | 被鎖的記錄號 | |
lock_data | varchar(8192) | YES | NULL | 被鎖的數據 |
desc information_schema.innodb_lock_waits
Field | Type | Null | Key | Default | Remark |
---|---|---|---|---|---|
requesting_trx_id | varchar(18) | NO | 請求鎖的事務ID | ||
requested_lock_id | varchar(81) | NO | 請求鎖的鎖ID | ||
blocking_trx_id | varchar(18) | NO | 當前擁有鎖的事務ID | ||
blocking_lock_id | varchar(81) | NO | 當前擁有鎖的鎖ID |
desc information_schema.innodb_trx ;
Field | Type | Null | Default | Remark |
---|---|---|---|---|
trx_id | varchar(18) | NO | 事務ID | |
trx_state | varchar(13) | NO | 事務狀態: | |
trx_started | datetime | NO | 0000-00-00 00:00:00 | 事務開始時間; |
trx_requested_lock_id | varchar(81) | YES | NULL | innodb_locks.lock_id |
trx_wait_started datetime | YES | NULL | 事務開始等待的時間 | |
trx_weight | bigint(21) unsigned | NO | 0 | # |
trx_mysql_thread_id bigint(21) unsigned | NO | 0 | 事務線程ID | |
trx_query varchar(1024) | YES | NULL | 具體SQL語句 | |
trx_operation_state | varchar(64) | YES | NULL | 事務當前操作狀態 |
trx_tables_in_use | bigint(21) unsigned | NO | 0 | 事務中有多少個表被使用 |
trx_tables_locked | bigint(21) unsigned | NO | 0 | 事務擁有多少個鎖 |
trx_lock_structs | bigint(21) unsigned | NO | 0 | # |
trx_lock_memory_bytes | bigint(21) unsigned | NO | 0 | 事務鎖住的內存大小(B) |
trx_rows_locked | bigint(21) unsigned | NO | 0 | 事務鎖住的行數 |
trx_rows_modified | bigint(21) unsigned | NO | 0 | 事務更改的行數 |
trx_concurrency_tickets | bigint(21) unsigned | NO | 0 | 事務併發票數 |
trx_isolation_level | varchar(16) | NO | 事務隔離級別 | |
trx_unique_checks | int(1) | NO | 0 | 是否唯一性檢查 |
trx_foreign_key_checks | int(1) | NO | 0 | 是否外鍵檢查 |
trx_last_foreign_key_error | varchar(256) | YES | NULL | 最後的外鍵錯誤 |
trx_adaptive_hash_latched | int(1) | NO | 0 | # |
trx_adaptive_hash_timeout | bigint(21) unsigned | NO | 0 | # |