ฉันจะดูค่าเฉพาะของ sql_mode ได้อย่างไร


94

มีsql_modeค่าบางอย่างใน MySQL:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLESฯลฯ

ฉันจะดูค่าเฉพาะได้อย่างไร คู่มือกล่าวว่า:

คุณสามารถดึงโหมดปัจจุบันได้โดยการออกคำสั่ง SELECT @@ sql_mode

แต่ก็ไม่แสดงอะไรเลยมีเพียงช่องว่างหนึ่งช่องในตาราง@@sql_modeที่มีชื่อคอลัมน์

คำตอบ:


144

ช่องว่างสำหรับคุณเท่านั้นเนื่องจากคุณไม่ได้ตั้งค่า sql_mode หากคุณตั้งค่าไว้แบบสอบถามนั้นจะแสดงรายละเอียด:

mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
|            |
+------------+
1 row in set (0.00 sec)

mysql> set sql_mode=ORACLE;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@sql_mode;
+----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                           |
+----------------------------------------------------------------------------------------------------------------------+
| PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER |
+----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2
ขอบคุณงานนี้ แต่บางส่วนมีค่าเริ่มต้น ฉันหมายความว่าฉันต้องการดูค่าเริ่มต้นโดยไม่ต้องตั้งค่า หรือมันเป็นไปไม่ได้?
กรีน

1
โหมดการรวมกันมีเอกสารทั้งหมดที่นี่: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html ตัวอย่างเช่นที่นี่คุณสามารถดูว่า 7 โหมดใดบ้างที่
Ike Walker

1
"โหมด SQL เริ่มต้นว่างเปล่า (ไม่ได้ตั้งค่าโหมด)" ยกมาจากหน้าคู่มือ MySQL Server ดูแลสำหรับโหมด SQL Server ฉันตีความว่านั่นหมายความว่าไม่มีการกำหนด sql_mode พิเศษใด ๆ ไว้นอกกรอบ
Mister_

@IkeWalker คุณหมายถึงว่าโดยค่าเริ่มต้น (โหมด "ว่าง") จะเท่ากับว่าไม่ได้ตั้งค่าทั้งหมดPIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERและอื่น ๆ หรือคุณหมายความว่าบางส่วนถูกตั้งค่าไว้ แต่ไม่ได้แสดงโดยค่าเริ่มต้น?
Pacerier

1
@Pacerier อดีตถูกต้อง หาก @@ sql_mode ว่างเปล่า (โหมด "ว่าง" ตามที่คุณเรียก) จะไม่มีการตั้งค่า sql_mode ฉันจะไม่แสดงความคิดเห็นเกี่ยวกับ sql_mode เริ่มต้นเพราะขึ้นอยู่กับเวอร์ชันของ MySQL ที่คุณใช้อยู่
Ike Walker

23

คุณยังสามารถลองสิ่งนี้เพื่อกำหนดมูลค่าส่วนกลาง ปัจจุบันsql_mode:

SELECT @@GLOBAL.sql_mode;

หรือค่าเซสชัน sql_mode :

SELECT @@SESSION.sql_mode;

ฉันยังรู้สึกว่าโหมด SQLว่างเปล่าจริงๆ

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