ฐานข้อมูลผิดพลาดทั่วไป: เซิร์ฟเวอร์ MySQL ปี 2006 หายไป


24

เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับข้อผิดพลาดทุกครั้งที่ฉันพยายามเพิ่มเนื้อหาไม่ว่าจะเป็นประเภทใด นี่เป็นข้อผิดพลาดที่ปรากฏในเบราว์เซอร์:

มีข้อยกเว้นที่ไม่ได้รับการจัดการเพิ่มเติมเกิดขึ้นขณะจัดการข้อยกเว้น

PDOException ดั้งเดิม: SQLSTATE [HY000]: ข้อผิดพลาดทั่วไป: เซิร์ฟเวอร์ MySQL ปี 2006 ได้หายไป: SELECT COUNT (cid) จาก {comment} WHERE status =: status; Array ([: status] => 0) ใน comment_count_unpublished () (บรรทัด 313 ของ /Applications/MAMP/htdocs/modules/comment/comment.module)

เพิ่มเติม

PDOException: SQLSTATE [HY000]: ข้อผิดพลาดทั่วไป: เซิร์ฟเวอร์ MySQL ปี 2549 ได้หายไปแล้ว: INSERT INTO {watchdog} (uid, ประเภท, ข้อความ, ตัวแปร, ความรุนแรง, ลิงค์, สถานที่, ผู้อ้างอิง, ชื่อโฮสต์, เวลาประทับ) VALUES (: db_insert_placeholder_0, ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_7,: db_insert_placeholder_7,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_placeholder_7,: Array ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] => ประเภท%: ข้อความในฟังก์ชั่น% (บรรทัด% บรรทัดของไฟล์%) [: db_insert_placeholder_0] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: ข้อผิดพลาดทั่วไป: เซิร์ฟเวอร์ MySQL ปี 2006 ได้หายไป: เลือก COUNT (cid) จาก {comment} WHERE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Applications / MAMP /htdocs/modules/comment/comment.module";sTP:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = โหนด% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) ใน dblog_watchdog () (บรรทัดที่ 154 ของ / Applications / MAMP / htdocs / โมดูล /log / dblog) dblog.module)

ฉันยังได้รับข้อผิดพลาดต่อไปนี้ในไฟล์ข้อผิดพลาด php ของฉัน:

ข้อผิดพลาดร้ายแรงของ PHP: ข้อยกเว้น Uncaught 'PDOException' พร้อมข้อความ 'SQLSTATE [HY000]: ข้อผิดพลาดทั่วไป: เซิร์ฟเวอร์ MySQL ปี 2006 ได้หายไปแล้ว' ใน /Applications/MAMP/htdocs/includes/database/database.inc:2136

การติดตามสแต็ค:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > execute (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> แบบสอบถาม ('SELECT หมดอายุ, ... ', Array, Array)
3 / Applications / MAMP / htdocs / include / lock.inc (167): db_query ('SELECT หมดอายุ, ... ', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ... ' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ... ')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( array)
7 [ฟังก์ชั่นภายใน]: DrupalCacheArray -> __ destruct ()
8 {main} ที่ถูกโยนใน /Applications/MAMP/htdocs/includes/database/database.inc ที่บรรทัด 2136

ฉันมีปัญหาเล็กน้อยในการถอดรหัสข้อความแสดงข้อผิดพลาดเหล่านี้ ใครช่วยให้ฉันเข้าใจว่าเกิดอะไรขึ้นที่นี่

คำตอบ:


31

9 ครั้งจาก 10 ข้อผิดพลาดนี้เกิดจากการmax_allowed_packetตั้งค่าขนาดใหญ่ไม่เพียงพอในไฟล์ my.cnf ของเซิร์ฟเวอร์ MySQL ของคุณ

ค่าเริ่มต้นมาตรฐานสำหรับ MAMP ในประสบการณ์ของฉันคือ 1M ซึ่งมักจะไม่เพียงพอสำหรับ Drupal (โดยเฉพาะอย่างยิ่งเมื่อพิจารณาขนาดของสตริงแคชที่สร้างขึ้น)

ลองเพิ่มการตั้งค่านั้นเรื่อย ๆ เพื่อดูว่าข้อผิดพลาดหายไปหรือไม่ ฉันแน่ใจว่าการค้นหา google อย่างรวดเร็วจะบอกวิธีใน MAMP ให้คุณทราบ


โชคดีที่กรณีของฉันไม่ได้ตกอยู่ในหมวด 1 จาก 10 ครั้ง คำแนะนำของคุณทำงานได้อย่างมีเสน่ห์! ขอบคุณ!
Mike2012

หันหน้าไปทางข้อผิดพลาดเดียวกันในหน้าต่าง มีการกำหนดค่า Apache, mysql และ PHP สแต็คในประเทศ ... โปรดแนะนำ
Prerit Mohan

และในกรณีที่ใช้ร่วมกับโฮสติ้งฉันควรทำอย่างไร
mohammed amine bourkadi

ติดต่อโฮสต์ของคุณขอให้พวกเขาทำการเปลี่ยนแปลง หากพวกเขาทำไม่ได้ / ไม่ได้คุณต้องตัดสินใจว่าโฮสต์นี้เหมาะสมกับคุณหรือไม่ @mohammedaminebourkkadi
ไคลฟ์

6

ข้อผิดพลาด MySQL / MariaDB นี้:

ข้อผิดพลาด: 2006 ( CR_SERVER_GONE_ERROR) - เซิร์ฟเวอร์ MySQL หายไปแล้ว

วิธีการโดยทั่วไปที่ลูกค้าไม่สามารถส่งคำถามไปยังเซิร์ฟเวอร์

สิ่งนี้อาจเกิดขึ้นได้จากความผิดพลาดชั่วคราวแบบสอบถาม SQL ที่ใหญ่เกินไปหรือไม่ถูกต้องการกำหนดค่าเซิร์ฟเวอร์ของคุณไม่ถูกต้องหรือข้อ จำกัด ของผู้ให้บริการโฮสต์ของคุณ

โดยทั่วไปข้อผิดพลาดนี้อาจเป็นผลมาจากหลายสิ่งเช่น:

  • แบบสอบถามไปยังเซิร์ฟเวอร์ไม่ถูกต้องหรือใหญ่เกินไป

    การแก้ไข: เพิ่มmax_allowed_packetตัวแปร

    หมายเหตุ: ตรวจสอบว่าตัวแปรที่อยู่ภายใต้ส่วนไม่ได้[mysqld][mysql]

    หมายเหตุ: อย่าลืมรีสตาร์ทเซิร์ฟเวอร์ MySQL / MariaDB

  • คุณหมดเวลาใช้งานจากการเชื่อมต่อ TCP / IP ทางฝั่งไคลเอ็นต์

    การแก้ไข: เพิ่มwait_timeoutตัวแปร

  • คุณพยายามเรียกใช้คิวรีหลังจากการเชื่อมต่อกับเซิร์ฟเวอร์ถูกปิด

    การแก้ไข: ข้อผิดพลาดเชิงตรรกะในแอปพลิเคชันควรได้รับการแก้ไข

  • การค้นหาชื่อโฮสต์ล้มเหลว (เช่นปัญหาเซิร์ฟเวอร์ DNS) หรือเซิร์ฟเวอร์เริ่มต้นด้วย--skip-networkingตัวเลือก

    ความเป็นไปได้อีกอย่างหนึ่งคือไฟร์วอลล์ของคุณบล็อกพอร์ต MySQL (เช่น 3306 โดยค่าเริ่มต้น)

  • เธรดที่กำลังทำงานถูกฆ่าตายแล้วลองอีกครั้ง

  • คุณพบข้อผิดพลาดที่เซิร์ฟเวอร์เสียชีวิตขณะดำเนินการค้นหา

  • ไคลเอนต์ที่ทำงานบนโฮสต์ที่แตกต่างกันไม่มีสิทธิ์ที่จำเป็นในการเชื่อมต่อ

  • และอีกมากมายเรียนรู้เพิ่มเติมที่: B.5.2.9 เซิร์ฟเวอร์ MySQL หายไปแล้ว

สำหรับรายละเอียดเพิ่มเติมโปรดตรวจสอบ MySQL หรือบันทึกระบบของคุณ (เช่น/var/log/messages)

ไปยัง MySQL เซิร์ฟเวอร์การแก้ปัญหาหรือลูกค้าโปรดตรวจสอบ: 26.5 แก้จุดบกพร่องและ Porting MySQL


ในกรณีที่คุณพยายามนำเข้าฐานข้อมูลจากไฟล์โดยใช้drushหรือmysqlคำสั่งคุณสามารถ:

  • เพิ่มตัวเลือกบังคับ ( -f) mysqlเพื่อดำเนินการต่อและเรียกใช้แบบสอบถามที่เหลือ

    สิ่งนี้มีประโยชน์หากฐานข้อมูลมีคิวรีขนาดใหญ่ที่เกี่ยวข้องกับแคชที่มีขนาดใหญ่ แต่ไม่เกี่ยวข้องเลย

    ใช้drushลอง:cat foo.sql | $(drush sqlconnect) -f

  • ลองใช้--max-allowed-packetตัวเลือกสำหรับmysqlค่าที่น้อยกว่า

  • เพิ่มmax_allowed_packetและwait_timeoutในการกำหนดค่าเซิร์ฟเวอร์ของคุณ (เช่น~/.my.cnf)

  • ทิ้งฐานข้อมูลต้นฉบับอีกครั้งโดยใช้--skip-extended-insertตัวเลือกเพื่อแยกย่อยแบบสอบถามขนาดใหญ่ จากนั้นนำเข้าไฟล์อีกครั้ง


ดูเพิ่มเติมที่: ข้อผิดพลาด 2006 (HY000): เซิร์ฟเวอร์ MySQL หายไป


3

คำตอบที่ @Clive ให้ตามปกติคือกรณี แต่อาจมีสาเหตุเพิ่มเติมโดยเฉพาะอย่างยิ่งกับการเพิ่มโหนดแบบฟอร์ม

โดยทั่วไปโหนดเพิ่มฟอร์มมีขนาดใหญ่และการประมวลผลสามารถใช้หน่วยความจำได้จำนวนมาก หากเซิร์ฟเวอร์มีหน่วยความจำไม่เพียงพอกระบวนการ mysqld อาจถูกปิดซึ่งทำให้ข้อความ "หายไป" เหมือนกัน

เงื่อนงำคือการดูในบันทึกของเซิร์ฟเวอร์ บนเครื่อง CentOS คุณอาจเห็นรายการต่อไปนี้ใน / var / log / ข้อความ

1 มกราคม 00:00:00 เคอร์เนลชื่อเซิร์ฟเวอร์: หน่วยความจำไม่เพียงพอ: กระบวนการฆ่า XXXX (mysqld) ให้คะแนน XXX หรือเสียสละลูก
1 มกราคม 00:00:00 เคอร์เนลเซิร์ฟเวอร์ชื่อ: กระบวนการฆ่า XXXX, UID XX, (mysqld) ทั้งหมด -mm: XXXkB , anon-rss: XXXkB, ไฟล์ -ssss: XXkB

ทางออกที่นี่คือการเพิ่มแรมเพิ่มเติมหรือเพิ่ม / เพิ่มการแลกเปลี่ยน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.