エラー内容
|
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
|
発生条件/原因/対処法
前提:Laravel, MySQL
絵文字を入力した際に発生するエラー。
対応策は複数あるので以下に挙げるもの全てを確認すること。
1. テーブルの文字コード
「utf8mb4_general_ci」といったマルチバイト(mb4)になっていること。
※対象のカラムに対しての変更を行うこと。データ互換性云々は自己責任で。
2. 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_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'),
]) : [],
|
上記のようにテーブルの文字コードと一致しているか確認。
一致していない場合は修正して以下のコマンドを実行。