Mysql Show Create Trigger - вывод имени триггера - PullRequest
0 голосов
/ 30 августа 2018

У меня есть две базы данных mysql, которые я хотел бы синхронизировать. Когда я бегу

show create trigger tr_del_EmailHash; 

из подключения mysqli с локальной веб-страницы. Я получаю немного разные выходные данные для каждой базы данных, в которой имя триггера возвращается в одинарных кавычках, например:

CREATE trigger `tr_del_EmailHash` before DELETE
...

, а другой возвращает имя триггера без кавычек:

CREATE trigger tr_del_EmailHash before DELETE
...

Поскольку я пытаюсь сохранить их в системе управления версиями и иметь возможность различать схемы на разных платформах, это различие очень нежелательно. Файлы mysqld.cnf и переменные сервера mysql одинаковы на каждом сервере, поэтому я не знаю, где искать элементы управления, указывается ли имя триггера в кавычках или нет при выполнении запросов «show create trigger» , Кто-нибудь может дать несколько полезных советов относительно того, где я должен искать или где это можно отрегулировать?

1 Ответ

0 голосов
/ 30 августа 2018

Режим цитирования для show create -статементов контролируется с помощью параметра конфигурации sql_quote_show_create:

Если включено (по умолчанию), сервер цитирует идентификаторы для операторов SHOW CREATE TABLE и SHOW CREATE DATABASE. Если отключено, цитирование отключено. Эта опция включена по умолчанию, поэтому репликация работает для идентификаторов, которые требуют цитирования.

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

...