Làm cách nào để xem giá trị cụ thể của sql_mode?


94

Có một số sql_modegiá trị trong MySQL:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES, Vân vân

Làm cách nào tôi có thể thấy một giá trị cụ thể? Hướng dẫn sử dụng nói:

Bạn có thể truy xuất chế độ hiện tại bằng cách đưa ra câu lệnh SELECT @@ sql_mode.

Nhưng nó chỉ hiển thị không có gì, chỉ là một trường trống trong bảng với @@sql_modetên cột.

Câu trả lời:


144

Nó chỉ trống cho bạn vì bạn chưa đặt sql_mode. Nếu bạn đặt nó, thì truy vấn đó sẽ hiển thị cho bạn chi tiết:

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
Cảm ơn bạn, điều này hoạt động. Nhưng một số trong số chúng có giá trị mặc định của chúng. Ý tôi là tôi muốn xem các giá trị mặc định mà không cần đặt giá trị. Hay là không thể?
Màu xanh lá cây

1
Các chế độ kết hợp đều được ghi lại ở đây: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Ví dụ: ở đây, bạn có thể xem 7 chế độ nào bao gồm chế độ kết hợp ORACLE: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker

1
"Chế độ SQL mặc định trống (không có chế độ nào được đặt)." Trích dẫn từ trang hướng dẫn Quản trị Máy chủ MySQL cho Chế độ Máy chủ SQL . Tôi giải thích điều đó có nghĩa là không có sql_mode đặc biệt nào được đặt ra khỏi hộp.
Mister_Tom 10/1213

@IkeWalker, Ý của bạn là nói rằng theo mặc định (chế độ "trống"), nó tương đương với việc tất cả PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERvà v.v. không được đặt? Hay bạn có nghĩa là một số trong số chúng được đặt nhưng không hiển thị theo mặc định?
Pacerier

1
@Pacerier trước đây là chính xác. Nếu @@ sql_mode trống (chế độ "trống" như bạn gọi), thì không có sql_mode nào được đặt. Tôi sẽ không bình luận về sql_mode mặc định vì điều đó phụ thuộc vào phiên bản MySQL bạn đang chạy.
Ike Walker

23

Bạn cũng có thể thử điều này để xác định giá trị toàn cầu hiện tại sql_mode:

SELECT @@GLOBAL.sql_mode;

hoặc giá trị phiên sql_mode :

SELECT @@SESSION.sql_mode;

Tôi cũng có cảm giác rằng chế độ SQL thực sự trống rỗng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.