Re: 本番環境へのデータベース移設でエラー(max key length is 767 bytes)

2021年7月2日 at 14:00

こんにちは。

取り急ぎ。

もしも、UTF8 の4バイト文字、特に絵文字などを取り扱っていなければ、
ローカルで構築されている concrete5 のデータベースの文字セットを utf8 にして、
SQL を出力し直し、へテムルに移管できませんか?

concrete5 で、文字セットを変更できる機能が管理画面にあります。

[管理画面] - [システム設定] - [サーバー設定一覧] - [データベース文字セット]

[c5 の URL]/index.php/dashboard/system/environment/database_charset

こちらの管理画面より、UTF8 に変更できます。

時間がかかる処理なので、
データベースのサイズによっては、1回のページロードで追わない場合があります。
その際は、ページをリロードすると完了するはずです。
PHP の max_execution_time を伸ばしたりしてもOKです。

また /application/config/database.php に書かれている文字列の設定も変更されるので、引っ越しをする際に database.php をきちんとコピーするようにお願いします。

ただ、 4バイト文字が使われていたら、エラーで止まってしまってサイトが復旧できなくなるので気をつけてください。

例えば、実施前にSQL バックアップをとってから実施していただくといいと思います。

もしも、Terminal などのCLI (コマンドライン) から実施できるのであれば、以下のコマンドで変換できます。

cd [c5 のルートディレクトリ]
concrete/bin/concrete5 c5:database:charset:set utf8

タグ:

Re: 本番環境へのデータベース移設でエラー(max key length is 767 bytes)

2021年7月3日 at 17:01
Kats_Ueno様

ご連絡どうもありがとうございます!
実は解決を一旦あきらめてしまったのですが、
今回教えていただいたことをトライしてみようと思います。
 

Re: 本番環境へのデータベース移設でエラー(max key length is 767 bytes)

2021年7月4日 at 7:46
すいません。補足です。

> ローカルで構築されている concrete5 のデータベースの文字セットを utf8 にして、

管理画面で変更する際の、正確な文字セット名は
utf8_general_ci
です。