Как отключить strict trans tables в phpmyadmin
Перейти к содержимому

Как отключить strict trans tables в phpmyadmin

  • автор:

Disabling MySQL strict mode on the server

MySQL Strict Mode controls how invalid or missing values in data changing queries are handled. This includes INSERT , UPDATE and CREATE TABLE statements. With MySQL Strict Mode enabled, which is the default state, invalid or missing data may cause warnings or errors when attempting to process the query.

When Strict Mode is disabled, the same query would have its invalid or missing values adjusted and would produce a simple warning. This may seem like the preferred result; however, with Strict Mode disabled, specific actions may cause unexpected results. For instance, when the value being inserted exceeds the maximum character limit, it is truncated to fit the limit.

For GFI HelpDesk to run on your server, you need to disable Strict Mode in your MySQL database.

This topic provides the instructions to make changes to the configuration to disable the Strict Mode.

To disable the Strict Mode, do the following:

  1. Open the my.ini or my.cnf file for editing (the file you have depends on whether you are running Windows or Linux).
  2. Find the following line:

How to disable/enable STRICT_TRANS_TABLES

Sambo

Sambo Member

how to disable The sql-mode STRICT_TRANS_TABLES ?
step by step please

Comments

Giedrius

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

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

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

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

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

Sambo Member

set global sql_mode='';

Giedrius

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.

Не отключается strict mode mysql?

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

601950f8ada82026897708.png

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

Дальше нажимаю все равно редактировать

601951266eb03012187337.png

60195193a34b2695488734.png

Открывается девственно чистый файл,
Пишу туда через 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

  • Вопрос задан более двух лет назад
  • 270 просмотров

Ошибки при переходе с MySQL 5.6 на 5.7 и как их исправить — импорт дампа БД завершился ошибкой или не работает INSERT. Отключение строгого режима STRICT_TRANS_TABLES или использование IGNORE

09.11.23 ИТ / Базы данных 925

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

oshibki-pri-perehode-s-mysql

Строгий режим MySQL

Начиная с версии MySQL 5.7, вводится строгий режим MySQL (STRICT MODE), который включен по умолчанию. То есть, ранее он также был доступен, но его необходимо было включить вручную. Такое нововведение вызывает ошибки с написанным кодом — сайт или веб-приложение отказывается работать.

Вначале стоит проверить, действительно ли включен строгий режим в MySQL. Если присутствует значение STRICT_TRANS_TABLES в переменной sql_mode — строгий режим включен. Набираем в консоли и смотрим на результат, вот команда для этого: SHOW VARIABLES LIKE ‘sql_mode’.

oshibki-pri-perehode-s-mysql-1

Ошибки при переходе с 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 = «».

Итак, заметка может оказаться довольно полезной, так как под рукой всегда будут быстрые решения таких вот неявных проблем при работе с базами данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *