108

MySQL にはいくつかのsql_mode値があります。

ANSI

IGNORE_SPACE

STRICT_TRANS_TABLESなど

1 つの特定の値を確認するにはどうすればよいですか? マニュアルには次のように書かれています。

現在のモードを取得するには、SELECT @@sql_mode ステートメントを発行します。

@@sql_modeしかし、何も表示されず、列名としてテーブル内の空白のフィールドが 1 つだけ表示されます。

4

3 に答える 3

169

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)
于 2012-05-14T21:29:03.150 に答える
27

これを試して、現在のグローバル sql_mode値を決定することもできます。

SELECT @@GLOBAL.sql_mode;

またはセッション sql_mode値:

SELECT @@SESSION.sql_mode;

また、 SQL モードが実際に空であると感じました。

于 2017-09-18T11:12:57.530 に答える
4

まず、mysql ターミナルにログインする必要があります。 mysql -u username -p password

次に、これを使用します。

SELECT @@sql_mode; or SELECT @@GLOBAL.sql_mode;

出力は次のようになります。

STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUB

これでSQLモードを設定することもできます:

SET GLOBAL sql_mode=TRADITIONAL;
于 2021-02-05T06:28:03.070 に答える