По умолчанию экземпляры RDS MySQL, созданные во время создания среды Elastic Beanstalk, не разрешают создание триггеров, функций и хранимых процедур, поскольку у главного пользователя нет привилегии SUPER, включено двоичное ведение журнала, а log_bin_trust_function_creators
- этоложный. Поэтому любые сценарии, которые пытаются выполнить это в container_commands, завершатся неудачей.
Это можно обойти после создания экземпляра , изменив группу параметров DB по умолчанию с log_bin_trust_function_creators = 1
. См. это видео для объяснения того, как сделать это в интерактивном режиме. Однако кажется, что вы не можете связать новый экземпляр с группой параметров не по умолчанию во время создания. Таким образом, вы вынуждены создавать экземпляры без триггеров и сохраненных процедур, изменять экземпляр для использования группы параметров не по умолчанию, перезагружать экземпляр, и только после этого вы можете запускать сценарии для создания триггеров и хранимых процедур.
Комучто еще хуже, вы даже не можете позволить вашим контейнерам-командам, которые создают триггеры, запускаться, потому что это приводит к сбою создания экземпляра, и вы не получаете рабочий экземпляр, к которому вы могли бы применить описанное ручное вмешательство. Поэтому вам нужно, чтобы ваши контейнерные команды были закомментированы во время создания, а затем повторно включены во время последующей перезагрузки 'eb deploy'. В этом сценарии вы не можете автоматизировать создание сред, требующих, чтобы DDL создавал триггеры, функции или хранимые процедуры.