utf8からutf8mb4への変更について

utf8からutf8mb4への変更について

- 山田 太郎 の投稿
返信数: 10

こんにちは。

さくらインターネットを使用しております。

データベース作成時にutf8mb4ではなくutf8で作成しております。

utf8mb4に変更したいのですが、データベースをバックアップして削除。

同じ名前でutf8mb4にて作り直してインポートすることは可能でしょうか。

不可能な場合、以下を参考にトライを考えておりますが、テーブル名がどれかわからない状態です。

ご存知の方がいらっしゃいましたら教えて頂ければ幸いです。

よろしくお願い致します。

https://holic.hateblo.jp/entry/2015/10/01/004519

山田 太郎 への返信

Re: utf8からutf8mb4への変更について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

Moodleデータベースのバックアップの後、Moodleプログラムを置いているディレクトリに移動して以下のコマンドを実行してください。

# php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

参考資料:
[MySQL full unicode support - MoodleDocs]
https://docs.moodle.org/39/en/MySQL_full_unicode_support#Steps_to_upgrade

Mitsuhiro Yoshida への返信

Re: utf8からutf8mb4への変更について

- 山田 太郎 の投稿
Mitsuhiro Yoshida 様

ご回答をありがとうございます。
手順ですが、phpmyadminへログイン⇒moodleデータベース選択⇒sql⇒上記コマンドを実行で合っているでしょうか。
上記手順の場合、「返り値が空でした (行数 0)。 (クエリの実行時間: 0.0003 秒。)」のメッセージが出ます。
moodleのサーバチェックではチェックが出たままです。
手順を勘違いしているでしょうか。
山田 太郎 への返信

Re: utf8からutf8mb4への変更について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

いいえ、以下の手順に従ってください。

  1. さくらのレンタルサーバにシェル (ssh) ログインする。
  2. Moodleを設置したディレクトリに移動する。※1
  3. Moodleデータベース変換用スクリプトを実行する。※2
※1 Moodle設置ディレクトリへの移動
# cd /home/ユーザアカウント名/moodle

※2 Moodleデータベース変換用スクリプトの実行
# php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
Mitsuhiro Yoshida への返信

Re: utf8からutf8mb4への変更について

- 山田 太郎 の投稿
Mitsuhiro Yoshida 様

ご返信をありがとうございます。
TeraTermにてログイン⇒moodleディレクトリ移動⇒スクリプト実行としましたが、以下となります。
% # php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
#: Command not found.

/moodle/admin/cliを追加して移動したあとにも実行しましたが同様でした。
手順がおかしいでしょうか。
Mitsuhiro Yoshida への返信

Re: utf8からutf8mb4への変更について

- 山田 太郎 の投稿
Mitsuhiro Yoshida 様

実行できました。
しかしながらサーバチェックにて確認するとチェックのままです。
追加の作業が必要でしょうか。
山田 太郎 への返信

Re: utf8からutf8mb4への変更について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

まず、さくらのレンタルサーバの管理ツール「phpMyAdmin」でMoodle用データベースおよびテーブルすべての文字コードがutf8mb4に変換されているかご確認ください。

もし、utf8mb4に変換されていない場合、本投稿の添付ファイル (sql_for_utf8mb4_unicode_ci.txt) を参考に管理ツール「phpMyAdmin」のSQLを使って文字セットおよび照合順序を一括変換してください。

Mitsuhiro Yoshida への返信

Re: utf8からutf8mb4への変更について

- 山田 太郎 の投稿
Mitsuhiro Yoshida 様

ご返信をありがとうございます。
データベースをエクスポートし中身を見ましたが、utf8mb4になっておりました。
念の為、頂いた添付ファイルを実行しましたが、「#返り値が空でした(行数0)。」のメッセージでした。
サーバチェックにて確認するとチェックのままです。
山田 太郎 への返信

Re: utf8からutf8mb4への変更について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

お使いのウェブブラウザのキャッシュをクリアした後、以下の手順をお試しください。

  1. Moodleにサイト管理者としてログインする。
  2. 「ダッシュボード > サイト管理 > 開発 > キャッシュを削除する」ページに移動する。
  3. 「すべてのキャッシュをクリアする」ボタンをクリックする。

山田 太郎 への返信

Re: utf8からutf8mb4への変更について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> サーバチェックにて確認するとチェックのままです。

Moodle設定ファイル (config.php) の一部で以下のように照合順序 (dbcollation) に「utf8mb4_unicode_ci」が設定されていますでしょうか?

$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '',
  'dbsocket' => '',
  'dbcollation' => 'utf8mb4_unicode_ci',

);

Mitsuhiro Yoshida への返信

Re: utf8からutf8mb4への変更について

- 山田 太郎 の投稿
Mitsuhiro Yoshida 様

ご返信をありがとうございます。
Moodle設定ファイル (config.php) の設定ができておりませんでした。
かなりのお手間をとらせてしまい申し訳ありません。
本当にありがとうございました。
深く感謝申し上げます。