2016-02-29 70 views
0

我得到下面的脚本这个错误:警告:现场XXX没有默认值

Warning:Field 'HUN2' doesn't have a default value. 

cmd, pars = """INSERT INTO USERS_WORDS (USERID, WORDID, SUBTITLEID, CONTEXT, TIMESTAMP, DATE) SELECT * FROM (SELECT %s, 
    %s, %s, %s, %s, %s) AS tmp WHERE NOT EXISTS (SELECT USERID, WORDID FROM USERS_WORDS 
    WHERE USERID=%s AND WORDID=%s) LIMIT 1""", (userid, wordid, subtitleid, context, timestamp, date, userid, wordid) 

try: 
cursor.execute(cmd, pars) //The error points to this line 
db.commit() 

在上面的说法我并不在现场HUN2插入任何值,那么为什么我得到这个错误? 注意:该字段是varchar(50),没有默认值,我不认为我应该设置任何值。

+2

如果没有默认值并且没有明确设置任何值,那么您认为该值是什么? –

+0

我应该将''设置为默认值还是NULL,还是应该将''插入字段? – erdomester

+0

你能描述你的餐桌USERS_WORDS吗? – FallAndLearn

回答

0

正如Vincent在他的评论中提到的那样,该表格需要一个值或缺少'HUN2'列。无论哪种方式,它需要陈述明示或暗示:

  1. 如果你有一个值来插入特定列,将其插入。如果您没有值(对于此特定记录),那么您需要明确指出(通过插入NULL值)。
  2. 如果“HUN2”的值是最有可能是大多数记录或至少一个特定的值,首先,(但是,可能会改变 此后),那么你可以设置该值作为默认值。

此前述的特定值可以是实际值或缺乏(NULL)。也就是说,NULL本身可以被设置为默认值。

根据业务规则,您可以决定上面提到的两个选项中的哪一个。

希望这有助于!