Я пытаюсь использовать mysqldump для экспорта базы данных, которая должна быть импортирована с использованием другого имени базы данных. Глядя на SQL, сгенерированный mysqldump, кажется, что триггеры - это единственные имена объектов, которые полностью соответствуют имени базы данных источника, что лишает мои потребности. Есть ли в любом случае для того, чтобы направить mysqldump не полностью-квалифицировать любые имена объектов, включая триггеры?mysqldump Полностью квалифицирует триггеры с именем базы данных
ответ
У меня была та же проблема, и я нашел решение. Я использовал MySQL Workbench для разработки моей базы данных, и я создал там триггеры. Все они использовали синтаксис CREATE TRIGGER trigger_name
, за исключением одного: CREATE TRIGGER dbname.trigger_name
(это была моя ошибка). Выход Mysqldump включал все триггеры таким же образом: только у одного было имя базы данных.
Mysqldump использует ваши оригинальные инструкции CREATE TRIGGER
, которые вы можете видеть через SHOW CREATE TRIGGER
. Если у вас есть триггер, определенный с именем базы данных, просто замените его (отбросьте и создайте) на один без dbname.
Скорее всего, вы добавляете имя базы данных при создании триггера. Попробуйте обновить триггер без имени базы данных.
Прошло некоторое время с тех пор, как мне пришлось иметь дело с этим, но я уверен, что проблема связана не с созданием триггеров с использованием полного имени базы данных: mysqldump генерирует скрипт создания триггера с именем базы данных независимо от того, как я их создал. –
Не идеальное решение, но выкачивание выходного сигнала из следующего избавило меня от имени базы данных на триггере для меня.
mysqldump ... opts ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'
Я не буду проверять это (прошло уже два года с тех пор, как я был нужен, и мне это не понадобится в обозримом будущем), но это звучит как правдоподобное и практичное решение, поэтому я отмечаю это как ответ! Спасибо, что поделился. –
Ха, я вижу, что действительно предлагал это решение более года назад, и я застрелил его. Тем не менее, он был подозрительным, а ваш - настойчивым, поэтому я оставлю вас с заметным ответом. Конечно, если кто-то найдет доказательства обратного, мы тогда это рассмотрим. На данный момент, я думаю, есть хороший шанс, что ваш совет поможет другим. –
ну, я только что протестировал его, потому что у меня была такая же проблема. Если это важно, моя версия сервера MySQL - 5.5.29-0ubuntu0.12.04.1 – ducin