שגיאת פסק זמן ההמתנה של נעילת MySQL 1205 נעילה; נסה להפעיל מחדש את העסקה

Mysql Error 1205 Lock Wait Timeout Exceeded



במהלך פיתוח ההליך המאוחסן של MySQL דווח על השגיאות הבאות שגרמו לכישלון הפעולה:



חיפשתי באינטרנט ולמדתי שהסיבה העיקרית לבעיה מסוג זה היא: מנוע האחסון InnoDB של Mysql תומך בעסקאות. לאחר תחילת העסקה, היא אינה מחויבת באופן פעיל, מה שמביא לכיבוש המשאב לאורך זמן. כאשר עסקאות אחרות מקדימות את המשאב, עקב נעילת העסקה האחרונה מובילה לכשל בקדימה! לכן חריגה מפסק ההמתנה של נעילה.



פִּתָרוֹן:
שיטה ראשונה:
1. בדוק בטבלת העסקה כדי למצוא את מזהה השרשור הנעול: בחר * FROM information_schema.INNODB_TRX



2. על פי המזהה, תהרגו את החוט הנעול: תהרגו 65


שיטה שנייה:
1. בצע פקודת MySQL: SHOW FULL PROCESSLIST מצא את מזהה השרשור הנעול (65 בתמונה למטה)



2. על פי המזהה, תהרגו את החוט הנעול: תהרגו 65