Как включить/отключить строгий режим 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
.