Как установить Amazon RDS SQL_MODE с несколькими значениями

MySQL позволяет параметру SQL_MODE иметь несколько значений в файле my.cnf. Как я могу сделать то же самое на Amazon RDS?

ОБНОВЛЕНИЕ: Эта проблема была исправлена ​​... см. Ниже.

2 ответа

Решение

Похоже, Amazon исправил это по состоянию на 24 мая 2016 года.

"Параметру sql_mode теперь можно задать список значений для всех версий MySQL и MariaDB. Список значений должен быть корректным и во всех регионах".

https://forums.aws.amazon.com/thread.jspa?threadID=232266

MySQL позволяет параметру SQL_MODE иметь несколько значений в файле my.cnf. Однако Amazon RDS допускает только одно значение, используете ли вы их консоль на основе браузера или инструменты CLI.

Я нашел (возможно, не идеальное) решение проблемы невозможности установить SQL_MODE для нескольких значений. В моей процедуре ниже, я показываю, каковы мои настройки. Вы можете выбрать любые значения, которые вы считаете подходящими для вашей среды.

1) В вашей группе параметров установите SQL_MODE = TRADITIONAL (или какое из значений всегда является вашим наивысшим приоритетом)

2) В вашей группе параметров установите для init_connect: SET SESSION sql_mode = 'TRADITIONAL,IGNORE_SPACE,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY'

Теперь, когда клиент входит в базу данных, его сеанс SQL_MODE должен быть установлен на все значения, передаваемые строкой init_connect. В моем случае это равняется: IGNORE_SPACE, ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NOUTION_OUTION_OUTION_OURITION

Предостережение: редактирование значения init_connect после его установки включало в себя вырезание и вставку. Однако я обнаружил, что пытаться удалить значение init_connect после его установки - это большая проблема, поэтому будьте осторожны при работе с ним. Хлопот? Чтобы удалить значение init_connect после установки, потребовалось, чтобы я создал новую группу параметров с нуля, установите все значения, кроме init_connect, в исходную группу параметров, удалите исходную группу параметров, затем переименуйте новую группу со старым именем. Это было верно как для Firefox, так и для Chrome. Я также не мог удалить значение с помощью инструмента CLI (aws rds modify-db-parameter-group).

Хотя это и не является частью этого поста, если кто-нибудь ответит, как удалить / сбросить / обнулить init_connect без проблем, описанных выше, это было бы здорово.

ОБНОВЛЕНИЕ 1:

Не берите в голову. Я обнаружил, что установка init_connect (в RDS) НЕ выдержит перезагрузку базы данных. Поэтому решение, которое я предложил выше, не работает.

Кроме того, поскольку нельзя удалить (удалить) параметр init_connect через консоль (почему бы и нет?), Его можно удалить с помощью команды CLI aws rds reset-db-parameter-group, а не перестраивать всю группу параметров, как я описывал ранее.,

Я ОЧЕНЬ разочарован тем, что Amazon RDS:

  • Не допускает множественных значений SQL_MODE.
  • Не позволяет нам удалить настройку init_connect через консоль.

ОБНОВЛЕНИЕ 2:

Согласно ответу Росса Скривнера, я протестировал установку нескольких значений SQL_MODE через консоль AWS. Я использовал значения 'TRADITIONAL,IGNORE_SPACE,ONLY_FULL_GROUP_BY' (без пробелов). Затем я дважды перезагрузил сервер, и все, казалось, прошло.

Спасибо Amazon за исправление, и спасибо Россу Скривенеру за указание на изменения в AWS.

Другие вопросы по тегам