DBの文字コードの設定 in Laravel


DBの文字コード

DBの新規作成は、phpmyadminを使って実施。
文字コードはデフォルトのutf8mb4_general_ciを利用。
参考記事中にも今後作るなら、utf8mb4で問題ないとのことなのでこれで良いとした。

一方、Laravelの方の文字コード設定はいままで何も気にしていなかったのだが、設定する項目があった。

config/database.php
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            // 'collation' => 'utf8mb4_unicode_ci',
            'collation' => 'utf8mb4_general_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

'collation' => 'utf8mb4_unicode_ci''collation' => 'utf8mb4_general_ci'にして、再度マイグレーションしたら、utf8mb4_general_ciでテーブルが作られるようになった。

過去の自分の作品を見てみると、全てDB作成時にはutf8mb4_general_ciを選んでいるが、テーブル自体はutf8mb4_unicode_ciでできていた。

これで問題になることはなさそうだけど、Laravelの文字コード設定も気にしようという話。

参考記事

あたまのなかとっちらかーる - MariaDB(MySQL)の照合順序の話