2016-02-29 69 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本身可以被設置爲默認值。

根據業務規則,您可以決定上面提到的兩個選項中的哪一個。

希望這有助於!