Этот вопрос немного устарел, но я просто потратил пару часов, пытаясь решить точно такую же проблему, поэтому я думаю, что ясное объяснение может пригодиться кому-то в будущем ...
Чтобы перейти к погоне: проблема в поле DEFINER в вашем дампе mysql.Это выглядит примерно так:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
Проблема в том, что этот * some_user @ localhost * всегда будет жестко привязан к учетной записи пользователя, которая использовалась для создания представления в исходной БД, а NOT * 1007.* пользователь, которого вы использовали для экспорта или импорта базы данных, как и следовало ожидать (или, по крайней мере, я сделал).И позже, во время импорта, этот пользователь будет использоваться для воссоздания представления.
Таким образом, вы можете экспортировать / импортировать как root, но если исходная БД работает под другим пользователем и у нее нет CREATE VIEWправа в новой базе данных, импорт не удастся.
У вас есть два простых решения:
- Поиск и замена всех ссылок на
some_user
@ localhost
в файле дампа наваш новый пользователь (тот, которого вы используете для импорта дампа, например root @ localhost) - Или вы можете предоставить * some_user * соответствующие права на новую базу данных, чтобы представления могли создаваться под его учетной записью
В любом случае проблему можно решить, но я думаю, что первый подход намного лучше и чище, так как вам не придется беспокоиться о нескольких пользователях в будущем.