2014-05-10 57 views
7

我在Mac OS X 10.9.2使用MySQL的,當我嘗試運行我的PHP的網站在本地我有這樣的錯誤:MySQL錯誤 - 無效的日期時間格式:1292不正確的日期時間值:「」爲

無效日期時間格式:1292不正確的日期時間值:''爲列nameOfTheColumn

錯誤發生時,我試圖在日期時間字段中插入一個空值。該網站在生產和其他一些本地計算機上工作正常,所以問題出在數據庫中,我必須在我的本地數據庫中解決。閱讀我讀的MySQL能夠在嚴格模式下運行的問題,所以我編輯/usr/local/mysql/my.cnf和我註釋掉這一行:

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

我重新啓動計算機,仍然不能正常工作,但根據網上的文檔和其他問題,這是方式,但我想知道,爲了使我的應用程序能夠正常工作,我必須做些什麼改變。重複一遍,代碼在生產環境中工作,使用xampp的Windows等等......所以不能改變,因爲只能在本地工作,我需要在MYSQL DATABASE中進行正確的修改。

在此先感謝!

+1

你的datetime列允許爲空嗎? – user3470953

+0

是的它確實如此,但我重複該網站在生產和其他位置,如我的Windows PC使用xampp。我無法更改數據庫結構和代碼。問題是在MySQL配置中,我讀到了這個,但最後我不知道我在my.cnf或其他相關文件中所做的改變是什麼。 – daveloper

+0

您是否已經想過將mysql配置從其中一個工作安裝複製到您的計算機上?不要忘記相應地修改mysql datadir,套接字的路徑。 – Kaii

回答

0

你可以改變你列允許空

ALTER TABLE table_name MODIFY datetime_column_name datetime; 

列可爲空默認情況下,只要一列未聲明爲NOT NULL。

+1

我只想添加[從手冊](https://dev.mysql.com/doc/refman/5.6/en/create-table.html):_對於所有引擎,UNIQUE索引允許多個可以包含NULL的列的NULL值._ – VMai

+0

獨特列如何允許多個空值? – user3470953

+0

即使列可以爲空,就像您的語句一樣,創建唯一索引也沒有問題。 NULL值不計爲重複項。 – VMai

0

最後我找到了解決方案,實際上我在路上,解決方案是註釋掉sql_mode,但是位於/etc/my.cnf而不是/usr/local/mysql/my.cnf的文件。如果您沒有對此行進行註釋,並且您嘗試插入空白值,則會引發錯誤,但是如果您將其註釋掉,則空值將變爲'0000-00-00 00:00:00'

8

它看起來像MySQL的osx實例上的默認sql_mode被設置爲拒絕無效日期。

你可以嘗試發出以下命令:

SET SESSION sql_mode='ALLOW_INVALID_DATES' 

爲您初始化會話。

+0

完美!我不得不使用它來運行更新以將一些無效的日期時間*改爲*有效的日期時間... –

相關問題