MySQLでViewを使ってるDBの複製でエラーが出た

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

やってた事

hoge1 ユーザーの hoge1_db を
hoge2 ユーザーの hoge2_db にコピーしたい。

phpMyAdminでhoge2ユーザーを作り、root権限でhoge1_db を hoge2_dbにコピーしようとしたら以下のエラー

#1356 - View 'hoge1_db.view_count' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

VIEWの権限がないみたいなエラー。

CREATE VIEWを編集する

ダンプファイルを作成する

mysqldump -u hoge1 -p --databases hoge1_db > hoge.dump

hoge.dump内のCREATE VIEW しているSQLのDEFINERを編集

CREATE ALGORITHM=UNDEFINED DEFINER=`hoge1`@`%` SQL SECURITY DEFINER VIEW `view_count` AS ...

↓

CREATE ALGORITHM=UNDEFINED DEFINER=`hoge2`@`%` SQL SECURITY DEFINER VIEW `view_count` AS ...

リストア実行

mysql -u hoge2 -p hoge2_db < hoge.dump

参考

http://dev.mysql.com/doc/refman/5.1/ja/create-view.html