エックスサーバーでjson型を利用しているとき、下記のようなエラーが出たときの対策です。
Some errors has been detected on the server!
Notice in ./libraries/dbi/DBIMysqli.class.php#523
Undefined offset: 245
Undefined offset: 245
ひとことでいうと、json型をlongtext型に変えましょう。
Laravel・エックスサーバーエラー:json型利用時にNotice in ./libraries/dbi/DBIMysqli.class.phpと出た時の対策
以下、わたしが経験した例でお伝えしていきますね。
わたしの場合は、チェックボックス用のデータ型として、マイグレーションファイルにjson型を指定していました。
ローカル環境では、このjson型は自動でlongtext型に変換されていました。
エックスサーバーにプロジェクトを反映させたところ、エックスサーバーでは、無事、該当カラムのデータ型はjson型になっていました。
ですが、実際にデータをいれると、こんなふうにエラーぎっしりになってしまいまいました。
Junko
一瞬どきっとしますね。
そこで検証した結果、どうやらデータ型が怪しいと気づきまして。該当のマイグレーションファイルをロールバックしました。
そのあと、マイグレーションファイルのデータ型をlongtextに変更しました。
【修正前のマイグレーションファイルから抜粋】
1 |
$table->json('correctcheck')->nullable()->after('correct'); |
【修正後のマイグレーションファイルから抜粋】
1 |
$table->longtext('correctcheck')->nullable()->after('correct'); |
こうするとエラーが修正できました。
Junko
同じようなエラーに悩む人の参考になれば嬉しいです。
なお、もし記事で紹介した状況と異なる前提条件ですと、お伝えした方法ではエラーが解決しない可能性もあります。