2016-01-20 86 views

回答

1

結構確保你使用的是最新的MySQL 5.7版本比5.7.7版本更新,或者禁用嚴格模式。 Versions 5.7.4 to 5.7.7 incorporated NO_ZERO_DATE SQL mode into strict mode.

在MySQL 5.7.4中,ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATE,並且NO_ZERO_IN_DATE SQL模式已被棄用。從MySQL 5.7.4到5.7.7,這些模式在明確命名時不會執行任何操作。相反,它們的效果包含在嚴格SQL模式的影響中(STRICT_ALL_TABLESSTRICT_TRANS_TABLES)。 換句話說,嚴格模式在這些版本中的含義與嚴格模式加上ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATENO_ZERO_IN_DATE之前的5.7.4含義相同。

MySQL 5.7.4更改嚴格模式更嚴格,包括ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATENO_ZERO_IN_DATE引起了一些問題。例如,在MySQL 5.6中使用嚴格模式但未啓用NO_ZERO_DATE,可以使用DEFAULT '0000-00-00 00:00:00'來定義TIMESTAMP列。 在具有相同模式設置的MySQL 5.7.4中,嚴格模式包含NO_ZERO_DATETIMESTAMP列的效果不能用DEFAULT '0000-00-00 00:00:00'定義。這會導致CREATE TABLE語句從5.6到5.7.4的複製失敗(如果它們包含TIMESTAMP列)。

+0

好的,我明白了。 :D謝謝。但我能做些什麼來解決。我需要使用ZERO_DATE。這個ZERO_DATE是否可以在5.7中啓用? – Rampagre3e3121312324

+0

如果我更改爲NULL,應該罰款? – Rampagre3e3121312324

+0

如果需要,請禁用嚴格模式。它是否能與NULL一起工作完全取決於你的應用程序邏輯。 – miken32

相關問題