sql >> データベース >  >> RDS >> Mysql

MySQLは、ビューを含むバックアップを確実に復元できますか?

    この質問は少し古いですが、まったく同じ問題を解決するために2、3時間無駄にしたので、将来誰かに明確な説明が役立つと思います...

    追いかけるには:問題はmysqlダンプのDEFINERフィールドにあります。次のようになります:

    /*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
    

    問題は、この* [email protected] です。 *元のDBでビューを作成するために使用されたユーザーアカウントに常にハードコードされ、ない 予想どおりにデータベースをエクスポートまたはインポートするために使用したユーザー(または少なくとも私はそうしました)。その後、インポート中に、このユーザーを使用してビューを再作成します。

    したがって、rootとしてエクスポート/インポートできますが、元のDBが別のユーザーで実行されていて、新しいデータベースでCREATE VIEW権限がない場合、インポートは失敗します。

    2つの簡単な解決策があります:

    1. some_userへのすべての参照を検索して置き換えます @ localhost 新しいユーザー(ダンプのインポートに使用するユーザー、例: example @ sqldat.com
    2. または、新しいデータベースに対して* some_user *に適切な権限を付与して、自分のアカウントでビューを作成できるようにすることもできます

    どちらの方法でも問題は解決しますが、将来的に複数のユーザーについて心配する必要がないため、最初のアプローチの方がはるかに優れていてクリーンだと思います。



    1. SQLとNoSQLの違い

    2. MySQLでNull値を比較する方法

    3. postgreql関数の実行中にトランザクションをコミットする

    4. ORA-12154指定された接続識別子を解決できませんでした