質問編集履歴

1

「SHOW CREATE TABLE servers;」の結果を追記。

2017/10/04 08:05

投稿

pitfall
pitfall

スコア11

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,8 @@
42
42
 
43
43
 
44
44
 
45
+ ```PHP
46
+
45
47
  $query = 'insert into servers (kind, address, db_name, note) values(?, ?, ?, ?)';
46
48
 
47
49
  // $kind, $address, $db_name, $noteには上記エラーメッセージ中のSQLにある値が格納されています
@@ -49,6 +51,8 @@
49
51
  $param = [$kind, $address, $db_name, $note];
50
52
 
51
53
  $result = DB::insert($query, $param);
54
+
55
+ ```
52
56
 
53
57
 
54
58
 
@@ -66,6 +70,8 @@
66
70
 
67
71
  Laravelが原因か確認するため、timestampのデフォルト値を0に戻し、以下のコードを実行したところ正常にinsertできました。
68
72
 
73
+ ```ここに言語を入力
74
+
69
75
  $dsn = "mysql:dbname=dev_db;host=127.0.0.1;charset=utf8mb4";
70
76
 
71
77
  $username = "root";
@@ -76,8 +82,48 @@
76
82
 
77
83
  $stmt = $pdo->exec("insert into servers (kind, address, db_name, note) values('1', '127.0.0.1', 'server1', 'test')");
78
84
 
85
+ ```
86
+
79
87
 
80
88
 
81
89
  ここまで確認するとLaravelが原因なのはほぼ間違いないと思いますが、対応策が分かりません。
82
90
 
83
91
  恐らく、LaravelのDB::insertメソッド内で正常なtimestamp値の範囲であるかどうかをチェックしているのではないかと思いましたが、Laravelのソースコードが追えず、原因と対応策が分からない状態です。
92
+
93
+
94
+
95
+ 質問の修正依頼に「SHOW CREATE TABLE servers;」の結果を、ということでしたので追記します。
96
+
97
+ +---------+------------------------------------------------------------
98
+
99
+ | Table | Create Table
100
+
101
+ +---------+------------------------------------------------------------
102
+
103
+ | servers | CREATE TABLE `servers` (
104
+
105
+ `id` int(11) NOT NULL AUTO_INCREMENT,
106
+
107
+ `kind` varchar(3) CHARACTER SET utf8 NOT NULL,
108
+
109
+ `address` varchar(15) CHARACTER SET utf8 NOT NULL,
110
+
111
+ `db_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
112
+
113
+ `note` text CHARACTER SET utf8,
114
+
115
+ `delete_flg` tinyint(1) NOT NULL DEFAULT '0',
116
+
117
+ `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
118
+
119
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
120
+
121
+ `updated_by` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
122
+
123
+ PRIMARY KEY (`id`)
124
+
125
+ ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 |
126
+
127
+ +---------+------------------------------------------------------------
128
+
129
+ 1 row in set (0.00 sec)