2014-05-10 14 views
7

Sto usando mysql in OS X 10.9.2 e quando provo a fare funzionare il mio sito web php nel locale ho questo errore:errore MySQL - formato datetime non valido: 1292 valore datetime non corretto: '' per la colonna

non valido formato datetime: 1292 Valore datetime non corretto: '' per nome colonnaOfTheColumn

L'errore si verifica quando ho tentato di inserire un valore vuoto in un campo datetime. Il sito funziona bene nella produzione e in altri computer dei locali, quindi il problema è nel database e devo essere risolto nel mio database locale. Lettura circa il problema che ho letto che mysql potrebbe essere in esecuzione in modalità rigorosa, in modo da modificare /usr/local/mysql/my.cnf e commentate questa linea:

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

I riavvio del computer ed ancora non funziona , ma secondo la documentazione online e altre domande, questo è il modo, ma mi piacerebbe sapere Qual è esattamente il cambiamento che devo fare per far funzionare la mia applicazione. Ripeti, il codice funziona in produzione, Windows con xampp, ecc ... quindi non può essere modificato perché è troppo lungo e solo per lavoro in locale ho bisogno del giusto cambiamento in MYSQL DATABASE.

Grazie in anticipo!

+1

la colonna datetime consente null? – user3470953

+0

Sì Sì, ma ripeto che il sito funziona bene in produzione e in altre posizioni come il mio PC Windows con xampp. Non riesco a cambiare la struttura del database e il codice. Il problema è nella configurazione di mysql, ho letto su questo ma alla fine non so quale sia esattamente il cambiamento che devo fare in my.cnf o in un altro file correlato. – daveloper

+0

hai già pensato di copiare semplicemente la configurazione di mysql da una delle installazioni funzionanti sul tuo computer? non dimenticare di modificare i percorsi per mysql datadir, socket di conseguenza. – Kaii

risposta

0

è possibile cambiare la colonna per consentire nulli

ALTER TABLE table_name MODIFY datetime_column_name datetime; 

Le colonne sono annullabili per default fino a quando una colonna non è dichiarato come NOT NULL.

+1

Voglio solo aggiungere [dal manuale] (https://dev.mysql.com/doc/refman/5.6/en/create-table.html): _Per tutti i motori, un indice UNIQUE consente più Valori NULL per le colonne che possono contenere NULL._ – VMai

+0

in che modo una colonna univoca consente più valori null? – user3470953

+0

Anche se una colonna è annullabile, come da dichiarazione, non c'è alcun problema a creare un indice univoco. I valori NULL non contano come duplicati. – VMai

0

Finalmente ho trovato la soluzione, infatti ero sulla strada, la soluzione è commentare sql_mode, ma il file si trova in /etc/my.cnf invece di /usr/local/mysql/my.cnf . Se non si commenta questa riga e si tenta di inserire un valore vuoto viene generato un errore, ma se si commenta, i valori vuoti diventano '0000-00-00 00:00:00'

8

Sembra che la sql_mode predefinita sulla tua istanza osx di MySQL è impostata per rifiutare le date non valide.

Si potrebbe provare questo comando:

SET SESSION sql_mode='ALLOW_INVALID_DATES' 

come si inizializza la sessione.

+0

Perfetto! Ho dovuto usare questo per eseguire un aggiornamento per modificare alcuni datetimes non validi * in * quelli validi ... –

Problemi correlati