รหัสข้อผิดพลาด MySQL 1175 ระหว่างการอัปเดตใน MySQL

Rhas Khx Phid Phlad Mysql 1175 Rahwang Kar Xapdet Ni Mysql



“เมื่อทำงานกับฐานข้อมูล 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