###前提・実現したいこと
外部アプリケーションから送られてきたJsonをLaravelで受け取って、それをMysqlに登録する
###発生している問題・エラーメッセージ
{ "message": "SQLSTATE[HY000]: General error: 1364 Field 'user_name' doesn't have a default value (SQL: insert into `users` (`account_code`) values (account_code))", "exception":
###該当のソースコード
public function userRegistration(Request $request){ $request->all(); dump($request->all()); DB::table('users')->insert( ['account_code' => 'account_code'], ['user_name' => 'user_name'] ); }
###送られてきているJson
dump($request->all());で見た結果一部割愛していますが、Jsonそのものは取得できていると思います
"account_code" => "19384724937" "user_id" => "4" "user_name" => "テストユーザー"
###試したこと
課題に対してアプローチしたことを記載してください
doesn't have a default value というのは、データベースのSQLモードに”STRICT_TRANS_TABLES”が追加されているため起こるそうなので
下記のようになっていたものを
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
+---------------+---------------------------------------------------------------
| Variable_name | Value
+---------------+---------------------------------------------------------------
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO
+---------------+---------------------------------------------------------------
1 row in set (0.01 sec)
このように変更しました
mysql> SET GLOBAL sql_mode=NO_ENGINE_SUBSTITUTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| sql_mode | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
しかし結果は変わらずです。
原因はSQLモードに”STRICT_TRANS_TABLES”が設定されているからというわけではないのでしょうか?
問題点としてどのようなことが考えられますか?
###補足情報(言語/FW/ツール等のバージョンなど)
Laravel5.5
Mysqlバージョン 5.7.20-0ubuntu0.16.04.1
環境
Vagrant Homestead

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/04 07:47 編集