Mysql 基于此模式插入数据的正确结构是什么?
我有一个如下所示的表架构:Mysql 基于此模式插入数据的正确结构是什么?,mysql,symfony,Mysql,Symfony,我有一个如下所示的表架构: mysql> desc category; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------
mysql> desc category;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| create_date | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
我已尝试插入数据,但仍出现以下错误:
mysql> INSERT INTO category (id, name, create_date) VALUES (NULL, Family Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00)' at line 1
ERROR 1292 (22007): Incorrect datetime value: 'NOW()' for column 'create_date' at row 1
我尝试过其他几种方法,但都没有找到好的文档
我试过这个:
mysql> INSERT INTO category(id, name, create_date) VALUES(NULL, 'Family Events', 'NOW()');
得到了这个错误:
mysql> INSERT INTO category (id, name, create_date) VALUES (NULL, Family Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00)' at line 1
ERROR 1292 (22007): Incorrect datetime value: 'NOW()' for column 'create_date' at row 1
作为补充,我正在添加它。您遵循的过程的问题是,您应该用”将字符串值包围起来:
-- If the column is a `DATETIME`, then use:
VALUES (NULL, 'Family Events', NOW()),
//------------^-------------^
-- If the column is a `TIMESTAMP`, then use:
VALUES (NULL, 'Family Events', CURRENT_TIMESTAMP),
//------------^-------------^
另外,我使用CURRENT\u TIMESTAMP
插入时间戳,或者使用NOW()
其他人指出的另一件事是,您不需要在INSERT
中添加额外的id
,因为它基于PRIMARY KEY
自动执行,并且因为它需要NULL
值,所以您可以完全删除它
您的最终SQL应该如下所示:
INSERT INTO category(name, create_date) VALUES('Family Events', CURRENT_TIMESTAMP);
带有当前时间戳和引号的答案就是解决方案。@Daniel谢谢。。。我已经添加了这两个变体…@Daniel请检查我是否已经解释了当<代码>:)