Moodleアップデート後、データをユニコードフォーマットで保存する必要があるとのエラーが発生

カテゴリー「エラー対応」の投稿について
YzITで実施したエラー対応の記録を共有するために公開しています。ブログで公開するために書かれた文章ではありませんので、ご了承ください。
------------------------------------

起票日:2020/8/16

エラー内容:Moodle更新後、初回アクセス時に以下のエラーが表示される。DBMSはPostgreSQLを使用。

あなたのすべてのデータをユニコードフォーマット (UTF-8) で保存する必要があります。Moodleの新しいインストールはユニコードをデフォルトキャラクタにセットしたデータベースで実行してください。アップグレードの場合、UTF-8移行処理を実行してださい (詳細は管理ページをご覧ください)。

原因:これまでのバージョンのMoodleではDBのエンコーディングが確認されていなかったため、デフォルトの設定であるSQL_ASCIIのままになっていた。

postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
moodle | postgres | SQL_ASCII | C | C |

対応:Moodle用データを管理するDBのデータをバックアップ、エンコーディングにUTF8を指定してDBを作成。UTF8に変換したバックアップを戻す。

バックアップを戻す際、pg_dumpで取得したバックアップにはDBのエンコーディングを設定するSQLが記述されているので、対象行を削除する必要がある。

SET client_encoding = 'SQL_ASCII';

コメント