Как включить/отключить строгий режим MySQL в localhost (xampp)?

Я хочу знать, как проверить, включен или выключен строгий режим MySQL в localhost (xampp).

Если тогда, для каких режимов и как отключиться.

Если выключено, то как включить.

Я уже последовали http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-full и https://mariadb.com/kb/en/mariadb/sql_mode/ и другие связанные сайты. Но я не получил точного ответа на мой вопрос.

Ответ 1

STRICT_TRANS_TABLES отвечает за установку строгого режима MySQL.

Чтобы проверить, включен строгий режим или нет, запустите приведенный ниже SQL:

SHOW VARIABLES LIKE 'sql_mode';

Если одним из значений является STRICT_TRANS_TABLES, тогда строгий режим включен, иначе нет. В моем случае это дало

+--------------+------------------------------------------+ 
|Variable_name |Value                                     |
+--------------+------------------------------------------+
|sql_mode      |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION|
+--------------+------------------------------------------+

Следовательно, в моем случае включен строгий режим, поскольку одним из значений является STRICT_TRANS_TABLES.

Чтобы отключить строгий режим, запустите приведенный ниже sql:

set global sql_mode='';

[или любой режим, кроме STRICT_TRANS_TABLES. Пример: установить глобальный sql_mode = 'NO_ENGINE_SUBSTITUTION';]

→ Чтобы снова включить строгий режим, запустите приведенный ниже SQL:

set global sql_mode='STRICT_TRANS_TABLES';

Ответ 2

Чтобы изменить его навсегда в ubuntu, выполните следующие

в командной строке ubuntu

sudo nano /etc/mysql/my.cnf

Затем добавьте следующее

[mysqld]
sql_mode=

Ответ 3

Сначала проверьте, включен ли строгий режим или нет в mysql, используя:

     SHOW VARIABLES LIKE 'sql_mode';

Если вы хотите отключить его:

     SET sql_mode = '';

или любой другой режим, кроме следующего. Чтобы включить строгий режим:

     SET sql_mode = 'STRICT_TRANS_TABLES';

Вы можете проверить результат из первого запроса mysql.

Ответ 4

Вы можете проверить его локальное и глобальное значение с помощью:

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;

Ответ 5

Проверьте значение с

SELECT @@GLOBAL.sql_mode;

затем очистите @@global.sql_mode с помощью этой команды:

SET @@GLOBAL.sql_mode=''

Ответ 6

Чтобы изменить его навсегда в Windows (10), отредактируйте файл my.ini. Чтобы найти файл my.ini, посмотрите путь на сервере Windows. Например, для моего экземпляра MySQL 5.7 службой является MYSQL57, и в свойствах этой службы путь к исполняемому файлу:

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file = "C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57

Т.е. отредактируйте файл my.ini в C:\ProgramData\MySQL\MySQL Server 5.7\. Обратите внимание, что C:\ProgramData\ является скрытой папкой в Windows (10). У моего файла есть следующие интересные темы:

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Удалите STRICT_TRANS_TABLES, из этой строки режима sql, сохраните файл и перезапустите службу MYSQL57. Проверьте результат, выполнив SHOW VARIABLES LIKE 'sql_mode'; в (новом) окне клиента командной строки MySQL.

(Я нашел другие ответы и документы в Интернете полезными, но ни один из них, кажется, не говорит вам, где найти файл my.ini в Windows.)

Ответ 7

В моем случае мне нужно добавить:

sql_mode="STRICT_TRANS_TABLES"

в [mysqld] в файле my.ini расположенном в C:\xampp\mysql\bin.