Batas waktu tunggu tunggu melebihi; coba mulai kembali transaksi


12

Saya mendapatkan kesalahan ini berulang kali setiap hari 4 - 5 kali.

SQLSTATE [HY000]: Kesalahan umum: 1205 Waktu tunggu tunggu kunci terlampaui; coba mulai kembali transaksi

Kali ini saya me-restart phpmyadmin saya tetapi itu terjadi berulang-ulang. Saya tidak dapat menunjukkan masalah ini.

Saya menggunakan Magento ver. 1.9.0.1 di situs web. Saya memiliki 7000+ produk. Di Server saya memiliki RAM 16GB .

Bagaimana cara mengatasi masalah ini?

Jawaban:


8

Anda harus mempertimbangkan untuk meningkatkan nilai waktu tunggu tunggu kunci untuk InnoDB dengan mengatur innodb_lock_wait_timeout , standarnya adalah 50 detik

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)

Anda dapat mengaturnya ke nilai yang lebih tinggi /etc/my.cnfsecara permanen dengan baris ini

[mysqld]
innodb_lock_wait_timeout=120

dan mulai kembali mysql. Jika Anda tidak dapat memulai kembali mysql saat ini, jalankan ini:

SET GLOBAL innodb_lock_wait_timeout = 120; 

Anda juga bisa mengaturnya selama durasi sesi Anda

SET innodb_lock_wait_timeout = 120; 

diikuti oleh kueri Anda


3
mengapa tidak 140 'atau 2000'? bagaimana ini bisa benar-benar menyelesaikan masalah? dengan menyembunyikannya?
Elzo Valugi

Anda memiliki masalah yang menyebabkan tabel dikunci lebih dari yang diharapkan secara wajar. Jika Anda melakukan ini, Anda memaksakan diri untuk menunggu 2 menit setiap kali alih-alih memperbaiki masalah satu kali. Dan seperti kata Elzo ... apa yang terjadi ketika 120 tidak cukup?
Carlos Robles

7

Anda akan melihat pesan ini jika konten database yang Anda coba akses telah dikunci oleh proses sebelumnya (biasanya berjalan lama). MySQL akan menunggu sejumlah waktu untuk kunci dihapus sebelum menyerah dan melempar kesalahan itu. Jika Anda dapat melacak ketika Anda melihat pesan kesalahan ini ke waktu yang konsisten pada hari itu, Anda harus melihat apa lagi yang sedang dilakukan server pada waktu itu - sebagai contoh adalah cadangan basis data yang berjalan. Dengan melakukan ini, Anda harus dapat mempersempit kemungkinan untuk proses apa yang bisa membuat kunci meskipun tidak selalu mudah untuk dilakukan - kemungkinan akan sedikit trial and error.


5

Alasan di balik masalah ini adalah jika Anda menjalankan banyak skrip khusus dan mematikan skrip sebelum koneksi basis data mendapatkan kesempatan untuk menutup.

Sesuatu memblokir eksekusi permintaan. Kemungkinan besar permintaan lain memperbarui, menyisipkan, atau menghapus dari salah satu tabel dalam permintaan Anda. Anda harus mencari tahu apa itu:

Jika Anda dapat masuk ke MySQL dari CLI dan jalankan perintah berikut

SHOW PROCESSLIST;

Setelah Anda menemukan proses pemblokiran / tidur, temukan iddan jalankan:

KILL {id};

Jalankan kembali permintaan awal Anda.

Mungkin tautan ini akan membantu Anda: SQLSTATE [HY000]: Kesalahan umum: 1205 Waktu tunggu tunggu kunci terlampaui; coba mulai ulang transaksi Magento .


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.