浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

Laravel + MySQLで絵文字がinsertに失敗したときの対処法

LaravelでTwitterログインできるサイトを作成した、という内容を以前ブログで書きましたが、このサイトのデバッグをしたところ、一部のTwitterアカウントでログインした際にエラーになる時があることがわかりました。

Illuminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x93\xB7 \xE5...' for column 'description' at row 1 (SQL: insert into `users` ...

それらのアカウントに共通していたのは、名前やプロフィールに絵文字を使用していたこと。

実はLaravel側から絵文字を含む文字列をインストールする際、/config/database.phpのmysqlドライバの設定を変更する必要があるようです。

🚨Laravel 絵文字が通らない問題 – Error Search

エラーが発生した際にmysqlドライバに指定されていた文字コードの設定は下記のようになっていました。

'mysql' => [
            ...省略...
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            ...省略...
        ],

一方上記の記事では、下記の文字コード設定に変更すると改善されたとの記述があります。

'mysql' => [
                ...省略...
		'collation' => 'utf8mb4_general_ci',
		'charset' => 'utf8mb4',
                ...省略...
],

試したところ、確かにエラーが出なくなり、無事絵文字が含まれた文字列もインサートできました。

SNSログインに対応して、ユーザー情報も取得する場合は必須となるので、注意したいポイントです。

  • この記事いいね! (0)