ロリポップにMoodleがインストールできなくなった。

Moodleのバージョンは2.8と現在は最新。

ちょっと前にインストールしたのですが、今回インストール(Moodle,PHP,Mysqlは同じバージョン)したら、できなくなっていました。エラーログを確認すると、

Debug info: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

INSERT INTO mdl_message_providers (name,component,capability) VALUES(?,?,?)
[array (
0 => ‘notices’,
1 => ‘moodle’,
2 => ‘moodle/site:config’,
)]
Error code: dmlwriteexception
Stack trace:
line 446 of /lib/dml/moodle_database.php: dml_write_exception thrown
line 1098 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
line 1144 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw()
line 316 of /lib/messagelib.php: call to mysqli_native_moodle_database->insert_record()
line 1513 of /lib/upgradelib.php: call to message_update_providers()
line 233 of /admin/index.php: call to install_core()

といった感じです。

解決策をみていくと、これにそれっぽいことが書かれてました。

そこで、MySQLの設定(my.cnf)にて、

binlog_format=ROWを設定することで正常にインストールすることができました。

なるほど、なるほど。おっ、これ、レンタルサーバーでは、Mysqlのコアな部分なので、設定変更することができません。前、インストールできて、今回このようなエラーが出たということは、DB側で何か変更されたと推測されます。

レンタルサーバーって、目に見えないところで、ApacheなりDBなり、修正されていることもあり、それがエラーにつながることもあります。WordpressなどのようなメジャーなOpenSourceであれば、テストしているでしょうし、そんな問題もおきないでしょうが。ということで、諦めて、AWSで運用することにしました。

その後の続き(追記)。

お問い合わせした結果

弊社で『my.cnf』内の「binlog_format」の設定を調査した結果、
お客様よりご連絡いただいたとおり〔ROW〕になっていた『my.cnf』内の「binlog_format」の設定が〔STATEMENT〕になっていることを確認いたしました。そのため、「binlog_format」の設定を、元の設定の〔ROW〕に変更いたしました。

という結果をいただきました。ちょっと、この対応はとても感動していて、DBの設定を変更するって、結構神経を使う作業なので、対応してくれないと思っていたのですが、すぐに対応していただき、本当に感謝しています。

コメント

タイトルとURLをコピーしました