Ben bir alanla MySql tablo olarak tanımlanan sahip ardından 'yarattı' gibi bir şey gösterecektir 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, bir makinede boş olabilir, başka değil? benim yerel makinede</p> <pre><code>`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP </code></pre> <p>, ben çalıştırabilirsiniz:
INSERT INTO mytbl (id, user_id, created) VALUES(88882341234, 765, null);
SELECT id, user_id, created FROM mytbl WHERE id = '88882341234';
Ve 2014-06- 13 21:16:42 '. (Ben mysqldump aracılığıyla sağlamış, (yerel ve evreleme boyunca) tablolardan
Column 'created' cannot be null.
şemalar aynıdır: Aynı sorguları çalıştırırsanız
Ama basamak sunucusunda
, bu hatayı alıyorum Bu testi çalıştırmadan önce tabloyu kopyalamak için).Her iki makinede de MySql 5.6.17 çalıştırıyorum. Ayrıca her ikisinin de aynı sql_mode'a sahip olmasını sağladım.
Sorun ne olabilir?
P.S. Ben null null olmayan bir alanın değerini ayarlama olurdu neden bilmiyorum insanlar için MySql Docs ki:
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.
sorun sorgu sadece yanlış ve MySQL (yerel makinenizde elini tutarak da olabilir Farklı SQL modu nedeniyle şüpheleniyorum). Eğer "yaratıldı" null olamazsa, o zaman neden yeryüzünde null olarak ayarlamaya çalışıyorsunuz? – Jon
Bu, null olmayan bir zaman damgası alanının değerini null olarak ayarlamanın, değeri şu anki saat olarak otomatik olarak ayarlamasının bir yolu olduğunu düşünüyor: http://dev.mysql.com/doc/refman/5.5/en/ timestamp-initialization.html Bu sorguyu orijinal olarak kim yazdıysa (bana değil) muhtemelen bunu niyet ediyordu. "Farklı SQL modu" ile ne demek istiyorsun? Bunu nasıl kontrol edebilir ve düzenleyebilirim? – Ryan
Bahse girerim http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html. Ben araştıracağım. – Ryan