この質問は少し古いですが、まったく同じ問題を解決するために2、3時間無駄にしたので、将来誰かに明確な説明が役立つと思います...
追いかけるには:問題はmysqlダンプのDEFINERフィールドにあります。次のようになります:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
問題は、この* [email protected] です。 *元のDBでビューを作成するために使用されたユーザーアカウントに常にハードコードされ、ない 予想どおりにデータベースをエクスポートまたはインポートするために使用したユーザー(または少なくとも私はそうしました)。その後、インポート中に、このユーザーを使用してビューを再作成します。
したがって、rootとしてエクスポート/インポートできますが、元のDBが別のユーザーで実行されていて、新しいデータベースでCREATE VIEW権限がない場合、インポートは失敗します。
2つの簡単な解決策があります:
-
some_user
へのすべての参照を検索して置き換えます @localhost
新しいユーザー(ダンプのインポートに使用するユーザー、例: example @ sqldat.com ) - または、新しいデータベースに対して* some_user *に適切な権限を付与して、自分のアカウントでビューを作成できるようにすることもできます
どちらの方法でも問題は解決しますが、将来的に複数のユーザーについて心配する必要がないため、最初のアプローチの方がはるかに優れていてクリーンだと思います。