Bagaimana saya bisa melihat nilai spesifik dari sql_mode?


94

Ada beberapa sql_modenilai di MySQL:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES, dll

Bagaimana saya bisa melihat satu nilai tertentu? Manual mengatakan:

Anda dapat mengambil mode saat ini dengan mengeluarkan pernyataan SELECT @@ sql_mode.

Tapi itu tidak menunjukkan apa-apa, hanya satu bidang kosong dalam tabel dengan @@sql_modenama kolom.

Jawaban:


144

Ini hanya kosong untuk Anda karena Anda belum menyetel sql_mode. Jika Anda menyetelnya, kueri tersebut akan menampilkan detailnya kepada Anda:

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
Terima kasih, ini berhasil. Tetapi beberapa di antaranya memiliki nilai default. Maksud saya, saya ingin melihat default tanpa mengatur nilainya. Atau tidak mungkin?
Hijau

1
Semua mode kombinasi didokumentasikan di sini: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Misalnya, di sini Anda dapat melihat 7 mode mana yang terdiri dari mode kombinasi ORACLE: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker

1
"Mode SQL default kosong (tidak ada mode yang disetel)." Dikutip dari halaman manual Administrasi Server MySQL untuk Mode SQL Server . Saya menafsirkan itu berarti bahwa tidak ada sql_mode khusus yang diatur di luar kotak.
Mister_Tom

@IkeWalker, Apakah Anda bermaksud mengatakan bahwa secara default (mode "kosong"), itu setara dengan seolah-olah semua PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERdan lain-lain tidak disetel? Atau maksud Anda bahwa beberapa di antaranya disetel tetapi tidak ditampilkan secara default?
Pacerier

1
@Pacerier yang pertama benar. Jika @@ sql_mode kosong (Anda menyebutnya mode "kosong"), maka tidak ada sql_mode yang disetel. Saya tidak akan berkomentar tentang sql_mode default karena itu tergantung versi MySQL yang Anda jalankan.
Ike Walker

23

Anda juga dapat mencoba ini untuk menentukan nilai global saat ini sql_mode:

SELECT @@GLOBAL.sql_mode;

atau nilai sesi sql_mode :

SELECT @@SESSION.sql_mode;

Saya juga merasa bahwa mode SQL memang kosong.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.