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

2021年6月18日 at 2:53

どうもご連絡ありがとうございます!
ご紹介いただいた動画で言われたとおり、ローカル→ローカルでデプロイを試したら問題なくインポート出来ました。

ただし肝心な、ローカル→リモート(ヘテムル)で行うと、どう試しても同じエラーが出てしまいます。

pictronさんのアドバイズ通りmysqlのServer charsetがutf8であることはローカル側もリモート側も確認済みです。

ただ、変だなぁ?と思うのは、phpMyAdminの一般設定の画面において、Server connection collation(サーバ接続の照合順序)を、ローカル側ではut8_unicode_ciをポップアップから選択できるのですが、リモート側だとポップアップでut8_unicode_ciを選んでも切り替わらず、何故かutf8mb4_unicode_ciに即座に戻ってしまうのです。utf8mb4でサーバ接続の照合順序が固定されてしまいます。


このあたりの話は私が明るくなく、上記の現象が良いのか悪いのか分からないのですが、どうもリモート側に問題があるように思えます。しかしヘテムルではデータベースはサポート外の様なので、この先はもう正常なデプロイは無理かなと諦めかけています。

一応、リモート側のphpMyAdminの画像を添付します。
もし解決できるのなら嬉しいのですが…

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

2021年6月18日 at 9:54
実際に試したわけではないので 効果は確認していませんが
ヘムテルさん MySQL5.6 ?
phpMyAdmin の設定で

innodb_large_prefix
innodb_file_per_table
innodb_file_format=Barracuda

はどうでしょうか
 

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

2021年6月18日 at 13:17
teraさん、ご連絡ありがとうございます。

ヘテムルさんのデータベースはMySQL5.6ですね。

ヘテムル側のphpMyAdminにて変数の画面で確認すると
innodb large prefix [ OFF ]
innodb file per table [ ON ]
innodb file format [ Barracuda ]
となっています。

ちなみにローカルホスト側では
MySQL5.7であり
innodb large prefix [ ON ]
innodb file per table [ ON ]
innodb file format [ Barracuda ]
となっています。
 

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

2021年6月18日 at 13:30
ヘムテルさんも
innodb large prefix [ ON ]
でいけばいいように思います
 

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

2021年6月21日 at 20:10
tera様

いろいろとありがとうごございます。
ヘテムルのphpMyAdminにおいてinnodb large prefixをユーザーが切り替えることができないため、ヘテムルへ掛け合いましたが回答は「ユーザーが切り替えられるようには出来ない」「ヘテムルが切り替えることはしない」とのことでした。

残念ですが、この件はこれ以上進展しそうにないので、別な手段を考えたいと思います。

teraさん、どうもありがとうございました。