私の所では、試験的にセットアップしてみたら、コースの手動バックアップ時に赤い背景のエラーに
なってしまいます。 apacheのログを見たら
[Tue Nov 08 22:53:11 2011] [error] [client ..] Potential coding error - existing temptables found when disposing database. Must be dropped!, referer: http://foo.bar/m21/course/mod.php?duplicate=1&sesskey=T5Uqufpdea&sr=0
のようなエラーです。
コース内の要素の「複製」(×2のアイコンのやつ)を実行しても同じエラーになります。
ちゃんと動いている人はいますでしょうか?
2.1.2 です。
コースの手動バックアップ、コース内要素(リソース、活動)の複製も問題なくできていますよ。今のところ大きなエラーはなく安定稼働しています。
DBの権限設定が不足していたのが原因でした。
「サイト管理 > 開発 > デバッグ > デバッグメッセージ (debug)」を「DEVELOPER: 開発者のための特別Moodleデバッグメッセージ」にして、下記環境にてコースの手動バッグアップを実行しましたが、エラー表示なしにバックアップできるようです。
Moodle 2.1.2+ (Build: 20111102)
REDHAT Enterprise Linux 5.2
Apache 2.2.21
PHP 5.3.8
MySQL 5.0.92
問題解決には、下記投稿のDaniel NelsonさんのMySQLユーザ権限付与に関する部分も参考になるかと思います。
[Using Moodle: Course Backup fails]
http://moodle.org/mod/forum/discuss.php?d=169014
Moodle1.9では、データベースユーザに必要な権限は次のとおりでした。
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER
(http://docs.moodle.org/19/en/RedHat_Linux_installation )
実際に、本学のMoodle1.9系では上記の権限でバックアップを含め正常動作しています。(MySQLは5.0.77)
Moodle2.xでは、吉田様の投稿でお示し頂いたスレッドにもあるように、CREATE TEMPORARY TABLES権限が必要になっています。(MySQLはバージョン5.0.25が必要)
SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER
( http://docs.moodle.org/20/en/Create_Moodle_site_database )
現在設定されているデータベースユーザの権限は、下記のSQLを実行することで確認できます。
mysql> show grants for 'DBUSER名'@'ホスト名';
ただ、当方で正常稼動しているMoodle2.1.2+にて、下記命令にてCREATE TEMPORARY TABLES権限をデータベースユーザから剥奪しバックアップを実行したところ、バックアップ時にエラーは発生するものの、喜多先生の投稿にあるエラーとはメッセージが異なりました。参考までに、下記のエラーが発生しました。
Debug info: Access denied for user 'DBUSER名'@'ホスト名' to database 'DB名'
CREATE TEMPORARY TABLE mdl_backup_ids_temp ( 略
喜多先生のエラーもデータベースっぽい感じではありますが、私の理解ではTEMPORARY
テーブルは接続ごとに作られ、接続が終了すると自動的にドロップされるので、existing temptables found というのがTEMPORARYテーブルを指しているとすればちょっと腑に落ちない気がいたします。
http://dev.mysql.com/doc/refman/5.1/ja/create-table.html
http://dev.mysql.com/doc/refman/5.1/ja/drop-table.html
試験環境とのことですので、原因を特定せず復旧を優先させるのであれば、MySQLサーバ(サービス)を再起動してみるとかでしょうか。
その通り、DBの権限設定が不足していたのが原因でした。
すべての権限を与えたら、バックアップも×2もうまく生きました。