Не отключается strict mode mysql?
Проблема такая, перенести на новый сервер сайт, там принудительно уже работает STRICT_TRANS_TABLES
Режим строго mysql , мне нужно его отключить для корректной работы сайта.
Через phpmyadmin не дает, требует права super ( в isp панели при создания пользователя нет выбора разрешения super)

Нашел мануал что нужно редактировать конфиг
vim /etc/my.cnf
захожу в данный файл, а он выдает что есть какой то еще один файл
Дальше нажимаю все равно редактировать


Открывается девственно чистый файл,
Пишу туда через vim
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Сохраняю и перезагружаю mysql сервер.
Проверяю
Без толку, все равно работает , далее читаю что нужно
над строкой с параметрами в конфиге писать
[mysqld]
Написал, при попытке перезагрузить mysql выдает ошибку
Job for mysql.service failed because the control process exited with error code. See «systemctl status mysql.service» and «journalctl -xe» for details.
и не загружается.
CentOS 8 , Mysql 8.0.21
- Вопрос задан более двух лет назад
- 262 просмотра
How to disable/enable STRICT_TRANS_TABLES

![]()
Sambo Member
how to disable The sql-mode STRICT_TRANS_TABLES ?
step by step please
Comments

Giedrius Administrator
you may check the following article for the explanation to your question:
If you need specific commands to your server, I would like to ask you to open a ticket in our system, so that we could check what OS you are running, at very least.
![]()
Sambo Member
I am using Cpanel /CentOs7
when i run it it show me
MySQL said: #1227 — Access denied; you need (at least one of) the SUPER privilege(s) for this operation

Giedrius Administrator
The commands works for me while I follow the instructions, however, your case could be different. What user do you use to execute commands, which command exactly result in this error code?
![]()
Sambo Member
The commands works for me while I follow the instructions, however, your case could be different. What user do you use to execute commands, which command exactly result in this error code?
i only have one user with all privileges

Giedrius Administrator
Can you provide more details? It would help us to help you, if you could just provide the list of commands you have executed before getting this error you mentioned.
If you don’t want to provide it here, open a ticket in our system.
![]()
Sambo Member
set global sql_mode='';

Giedrius Administrator
Once you are connected to your VPS via SSH, please try connecting to your mysql with «root» user:
mysql -u root -p
Enter «root» user password and you will be in the mysql environment (mysql>), then simply check what is sql_mode, with the following command:
SHOW VARIABLES LIKE 'sql_mode';
Basically, you will see the table as your result, if the table has a value of STRICT_TRANS_TABLES, it means that this option is enabled, so you need to remove the value from this table with the following command:
set global sql_mode='';
This will set your table’s value to empty and disable this setting. Like this:
Please make sure to perform these commands within the mysql environment and not simply via SSH. I think this moment was missed in the article provided below and the author assumes that the reader understands it intuitively.
Ошибки при переходе с MySQL 5.6 на 5.7 и как их исправить — импорт дампа БД завершился ошибкой или не работает INSERT. Отключение строгого режима STRICT_TRANS_TABLES или использование IGNORE

09.11.23 ИТ / Базы данных 754
Если неожиданно обнаруживается, что при переходе на новую версию MySQL произошли ошибки — тогда, скорее всего вы писали код запросов к БД в нестрогом простом режиме. Такой режим допускает вольности, что с одной стороны упрощает написание запросов, а с другой — порождает множество неточностей и ошибок. Рассмотрим, как этого избежать или как исправить уже допущенные ошибки.

Строгий режим MySQL
Начиная с версии MySQL 5.7, вводится строгий режим MySQL (STRICT MODE), который включен по умолчанию. То есть, ранее он также был доступен, но его необходимо было включить вручную. Такое нововведение вызывает ошибки с написанным кодом — сайт или веб-приложение отказывается работать.
Вначале стоит проверить, действительно ли включен строгий режим в MySQL. Если присутствует значение STRICT_TRANS_TABLES в переменной sql_mode — строгий режим включен. Набираем в консоли и смотрим на результат, вот команда для этого: SHOW VARIABLES LIKE ‘sql_mode’.

Ошибки при переходе с MySQL 5.6 на 5.7
Как проявляются ошибки при переходе с MySQL 5.6 на 5.7? Например, скорее всего в начале это было замечено на локальном хостинге. При смене версии MySQL — код переставал работать, к примеру:
- Импорт дампа базы в phpMyAdmin завершился с ошибкой. Потребовалось вручную отредактировать дамп, удалить строки с ошибками — например, данные были слишком большими;
- Не добавляются новые записи в БД, не работает команда INSERT. Это из-за того, что необходимо заполнять все поля в таблице, для которых не заданы значения по умолчанию. В нестрогом режиме такого требования нет.
Как исправить ошибки
Как исправить ошибки при переходе с MySQL 5.6 на 5.7? Можно выделить два сценария:
- Исправить сам код запросов или дамп, как было сказано выше;
- Выключить строгий режим MySQL или исправить таблицы в БД — например, задать все необходимые значения по умолчанию (DEFAULT).
Лучше конечно сразу писать код в строгом режиме и без ошибок, но что конкретно сделать для исправления уже возникшей ситуации согласно обозначенным сценариям? Есть два варианта решений для каждого сценария, первые два пункта ниже относятся к первому сценарию, вторые два соответственно ко второму:
- Пересмотреть структуру таблиц — задать все необходимые значения по умолчанию, проверить типы данных и длину вставляемых значений;
- Просмотреть весь код для работы с БД и произвести его рефакторинг — задать значения для всех полей без значений по умолчанию, проверить соответствия типов полей и добавляемых данных, а также их длину. Или использовать команду IGNORE для игнорирования ошибок в конкретном запросе;
- Для локального хостинга или если есть доступ к конфигурационным файлам: открыть конфигурационный файл MySQL и в секции [mysqld] снять все ограничения, написать sql-mode = «». Не забыть перезапустить сервер;
- Написать в начале своего скрипта код, который выполнит команду: SET GLOBAL sql_mode = «».
Итак, заметка может оказаться довольно полезной, так как под рукой всегда будут быстрые решения таких вот неявных проблем при работе с базами данных.
How do I disable Strict Mode in MySQL?
Please follow the instructions given below to turn off the MySQL Strict Mode. The latest versions of PHPKB Knowledge Base Management Software does not require MySQL Strict Mode to be turned OFF. It was a requirement for older versions (version 8 or older) of PHPKB software.
1. Disable Strict Mode via my.cnf/my.ini
This method disables it by changing the value of SQL_MODE in my.cnf file (for Linux) OR my.ini file (for windows server) and restarting the MySQL server. my.cnf file can be found in one of a few locations (depending on which distribution you’re using). The most common locations are /etc/my.cnf and /etc/mysql/my.cnf .
NOTE: Make the following changes in the my.ini (for Windows Operating System) or my.cnf (for Linux Operating System). Inside that file, look for a heading like [mysqld] and then look for the value of sql_mode. It might look like this (the actual value of sql_mode may vary):
- Look for the following line:
sql-mode = «STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION» - You can change the value of sql_mode to NO_ENGINE_SUBSTITUTION to completely disable strict mode, but you may want to look up each mode that is configured before disabling it or you can simply change it to:
sql-mode=»» (i.e. Blank)
If sql_mode isn’t set, you can add it under the [mysqld] heading, then save the file, and restart MySQL. - Restart the MySQL Service.
2. To Disable Strict Mode via SQL
This method allows you to disable the strict mode on your MySQL server by running the following command.
$ mysql -u root -p -e "SET GLOBAL sql_mode = ’NO_ENGINE_SUBSTITUTION’;"
Now, you can verify that the mode is set by running the following:
$ mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"
That’s all! Full documentation for setting MySQL modes is available on the Server SQL Modes page in the MySQL Documentation. A description of all of the modes is also available on that page.
- Applicable To: Standard Edition, Standard (Multi-Language) Edition, Enterprise Edition (MySQL), Enterprise Multi-Language Edition (MySQL), Enterprise Edition (SQL Server), Enterprise Multi-Language Edition (SQL Server)
30 people found this article helpful what about you?