Ho una tabella MySQL con un campo definito come:data/ora NOT NULL DEFAULT CURRENT_TIMESTAMP può essere nullo su una macchina ma non un'altra?
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
sulla mia macchina locale, posso correre:
INSERT INTO mytbl (id, user_id, created) VALUES(88882341234, 765, null);
SELECT id, user_id, created FROM mytbl WHERE id = '88882341234';
E poi 'creato' visualizzerà qualcosa come '2014-06- 13 21:16:42 '.
Ma sul mio server di gestione temporanea, se corro le stesse query, ottengo questo errore:
Column 'created' cannot be null.
Gli schemi delle tabelle sono le stesse (tra locale e messa in scena), che ho assicurato tramite mysqldump (clonare la tabella prima di eseguire questo test).
Sto eseguendo MySql 5.6.17 su entrambe le macchine. Ho anche assicurato che entrambi abbiano lo stesso sql_mode.
Quale potrebbe essere il problema?
P.S. Per le persone che non sanno perché sarei impostazione del valore di un campo non annullabile a null, MySql Docs dicono:
In addition, you can initialize or update any TIMESTAMP column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values.
Il problema potrebbe essere che la query è semplicemente sbagliato e MySql sta tenendo la mano sulla macchina locale (Sospetto a causa della diversa modalità SQL in vigore). Se 'created' non può essere' null', allora perché stai cercando di impostarlo su 'null'? – Jon
Penso che questo affermi che l'impostazione di un valore del campo di timestamp non annullabile su null sia un modo per impostarlo automaticamente come l'ora corrente: http://dev.mysql.com/doc/refman/5.5/en/ timestamp-initialization.html Quindi chiunque abbia scritto questa query originariamente (non io) probabilmente lo intendeva. Cosa intendi per "modalità SQL diversa"? Come posso verificarlo e modificarlo? – Ryan
Scommetto che intendi http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html. Indagherò – Ryan