“เมื่อทำงานกับฐานข้อมูล MySQL คุณอาจพบ “รหัสข้อผิดพลาด 1175” ที่ทริกเกอร์เมื่อดำเนินการตามคำสั่ง UPDATE หรือ DELETE”
โพสต์นี้จะกล่าวถึงสาเหตุของข้อผิดพลาดนี้และวิธีที่เราจะแก้ไขโดยใช้เซิร์ฟเวอร์ MySQL
อะไรเป็นสาเหตุของ “รหัสข้อผิดพลาด MySQL 1175”
“MySQL Error Code 1175” เกิดขึ้นเมื่อดำเนินการ UPDATE หรือ DELETE โดยไม่ใช้คำสั่ง WHERE
ตามค่าเริ่มต้น MySQL ใช้คุณลักษณะที่เรียกว่า safe_mode ที่ป้องกันไม่ให้คุณดำเนินการคำสั่ง UPDATE หรือ DELETE โดยไม่มีส่วนคำสั่ง WHERE เพื่อป้องกันการสูญเสียข้อมูลโดยไม่ได้ตั้งใจบนเป้าหมาย
ดังนั้น เมื่อเปิดใช้งานคุณลักษณะ safe_mode MySQL จะส่งคืนรหัสข้อผิดพลาด 1175 ในการดำเนินการ DELETE หรือ UPDATE ใดๆ ที่ไม่มีส่วนคำสั่ง WHERE
ตัวอย่างแสดงอยู่ด้านล่าง:
อัพเดท sakila.film ชุด ชื่อเรื่อง = 'ชื่อใหม่' ;ในกรณีนี้ เรากำลังพยายามเปลี่ยนค่าของคอลัมน์ชื่อโดยไม่ระบุว่าเราต้องการกำหนดเป้าหมายแถวใด ซึ่งอาจส่งผลให้เราเขียนทับทั้งตารางด้วยค่าที่ระบุ ดังนั้น MySQL จะป้องกันสิ่งนี้และส่งคืนข้อผิดพลาดดังที่แสดง:
MySQL ตรวจสอบว่าเปิดใช้งาน Safe_Mode หรือไม่
สถานะของคุณลักษณะ safe_mode ถูกเก็บไว้ในตัวแปร sql_safe_updates ดังนั้น เราสามารถดึงค่าของตัวแปรนี้เพื่อตรวจสอบว่าคุณลักษณะ safe_mode เปิดใช้งานอยู่หรือไม่
แบบสอบถามเป็นดังนี้:
แสดงตัวแปรเช่น 'sql_safe_updates' ;แบบสอบถามควรส่งคืนสถานะตามที่แสดง:
+-------------------+-------+| Variable_name | ค่า |
+-------------------+-------+
| sql_safe_updates | บน |
+-------------------+-------+
1 แถว ใน ชุด ( 0.00 วินาที )
ในกรณีนี้ เราจะเห็นได้ว่าฟีเจอร์ safe_mode ถูกเปิดใช้งานในเซสชัน
วิธีแก้ไข “MySQL Error Code 1175”
วิธีที่ดีที่สุดในการแก้ไขข้อผิดพลาดประเภทนี้คือการใช้ส่วนคำสั่ง WHERE อย่างไรก็ตาม ในบางกรณี เราอาจจำเป็นต้องดำเนินการ UPDATE หรือ DELETE โดยไม่มีเงื่อนไขใดๆ
ในการดำเนินการนี้ เราสามารถปิดใช้งานคุณลักษณะ safe_mode ในเซสชัน ซึ่งทำให้เราสามารถดำเนินการค้นหาได้ จากนั้น เราสามารถใช้คำสั่ง SET ตามด้วยชื่อตัวแปรและค่าที่เราต้องการตั้งค่า
ตัวอย่างเช่น ในการปิดใช้งาน safe_mode เราตั้งค่าของตัวแปร sql_safe_updates เป็น 0 แบบสอบถามจะเป็นดังนี้:
SET SQL_SAFE_UPDATES = 0 ;หากต้องการเปิดใช้งาน ให้ตั้งค่าเป็น 1 เป็น:
SET SQL_SAFE_UPDATES = 1 ;ใน MySQL Workbench คุณสามารถปิดใช้งานคุณลักษณะ safe_mode ได้โดยไปที่ Edit-> Preferences -> SQL Editor
ปิดใช้งานคุณลักษณะ 'Safe Updates' และรีสตาร์ทเซสชันของคุณไปยังเซิร์ฟเวอร์
การสิ้นสุด
คุณได้เรียนรู้สาเหตุของ 'MySQL Error Code 1175' ในโพสต์นี้เมื่อดำเนินการคำสั่ง UPDATE หรือ DELETE คุณยังได้เรียนรู้วิธีแก้ไขข้อผิดพลาดด้วยการปิดใช้งานคุณสมบัติ MySQL safe_mode