MySQL空值不插入

时间:2019-07-12 11:44:24

标签: mysql

我有一个类似的查询

INSERT INTO support_users VALUES("1",,"2","1","4",,,"2017-05-06 20:24:36");

但是新的MySQL没有插入给定的错误错误代码:1064

但我将其更改为

INSERT INTO support_users VALUES("1","","2","1","4",,,"2017-05-06 20:24:36");

工作

但是以前的MySQL没有这样的问题。如何解决。无需更改查询

表定义

CREATE TABLE support_users (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `client` int(11) DEFAULT NULL,
  `user` int(11) DEFAULT NULL,
  `ticket` int(11) DEFAULT NULL,
  `scope` int(11) DEFAULT NULL,
  `notify` tinyint(1) DEFAULT NULL,
  `email` tinyint(1) DEFAULT NULL,
  `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8;

2 个答案:

答案 0 :(得分:3)

首先,尊重数据类型。如果其整数不使用引号。

解决问题的正确方法是使用NULL。因此,这适用于任何版本的MySQL。

INSERT INTO support_users VALUES(1,NULL,2,1,4,NULL,NULL,'2017-05-06 20:24:36');

答案 1 :(得分:1)

1)

整数列值不应该被引用。

所以“ 1”变成1

2)

不应自动将自动增量值赋予SQL-让它自己计算出来。

3)

使用NULL关键字插入NULL

4)

您的日期时间列在其定义中进行了设置,以显示插入时该行的当前日期时间。因此,在插入(而不是更新等)时,不需要包括此数据。

5)

出于理智的考虑,也很容易列出要使用INSERT指令添加到哪些列。

6)

直接与MySQL一起使用时,在字符串数据的双引号('周围使用单引号"

结果:

INSERT INTO support_users( `id`, `ticket`, `scope` , `notify`)     
       VALUES (1, 2,1,4);

如果您尝试插入两次,这将导致错误,因为您将主键(id)强制为1。为避免这种情况,请跳过“自动增量(id)”列的值。


为清晰起见;完整的SQL:

INSERT INTO support_users VALUES (1, NULL, 2, 1, 4, NULL, NULL, '2017-05-06 20:24:36');

跳过自动增量(id)列值(如上所述):

INSERT INTO support_users VALUES (NULL, NULL, 2, 1, 4, NULL, NULL, '2017-05-06 20:24:36');