У меня возникают проблемы с правильной работой резервных копий mysql, когда они отображаются в базе данных. Я думаю, это может иметь какое-то отношение к тому, что для него нужен объект-заполнитель. В любом случае я запускаю эту команду:
mysqldump -u myuser -pmypassword mydatabase | mysql -u myuser -pmypassword -C mydatabase_Beta
У пользователя есть полные права, и я получаю следующее:
View mydatabase_beta.yadayada ссылается на недопустимые таблицы, столбцы или функции, или на определитель / вызывающий объект, или на просмотр, у которого отсутствуют права на их использование.
Как я могу сделать резервную копию, чтобы правильно восстановить всю мою базу данных?
В этом примере я восстанавливаю его под другим именем, но мне нужно иметь возможность восстановить рабочую копию. Я думаю, что это, вероятно, дополнительный параметр mysqldump или, возможно, горячая копия будет работать лучше. Мысли?
Сначала попробуйте сделать это в два этапа:
mysqldump -uroot -ppassword --skip-extended-insert database.sql > database.sql
Таким образом, он выполняет резервное копирование в файл, а затем передает его во вторую команду:
mysql -u myuser -pmypassword -C mydatabase_Beta < database.sql
Если ошибка ссылки находится на шаге mysqldump, либо исправьте представления, либо удалите его из базы данных. Я не могу представить, что они все еще используются, если они ссылаются на несуществующую таблицу.
Я думаю, можно было бы добавить -f
:
--force, -f
Continue even if an SQL error occurs during a table dump.
Одно из применений этой опции - заставить mysqldump продолжать выполнение, даже если он встречает представление, которое стало недопустимым, поскольку определение относится к таблице, которая была удалена. Без --force
, mysqldump завершает работу с сообщением об ошибке. С участием --force
, mysqldump печатает сообщение об ошибке, но также записывает комментарий SQL, содержащий определение представления, в вывод дампа и продолжает выполнение.
Выстрел здесь в темноте, но я не думаю, что вам нужен -C
во второй половине этого заявления. Согласно моей копии mysql -C
определяет путь к файлу конфигурации для использования.