2016-05-18 8 views
15

Sędziowałem wiele pytań, które mają tytuł taki sam jak mój, ale ma inne podejście i inny problem, więc to pytanie nie jest duplikatem.# 1292 - Nieprawidłowa wartość daty: "0000-00-00"

Mam tabelę, w której columnfm_sctrdate jest typu date i ma wartość domyślną 0000-00-00.

enter image description here

Insertion przez strony działa poprawnie, ale gdy próbuję wstawić dowolną wartość przez phpmyadmin potem mam następujący błąd.

enter image description here

Mysql wersja jest 5.7.11. Jeszcze jedna rzecz, niedawno nasz serwer został uaktualniony z mysqlnd 5.0.12 do 5.7.11.

Oto zapytanie

INSERT INTO `iavlif_fmp_clientquote` (`jm_cqid`, `fmsq_id`, `fmsg_id`, 
`fm_sctrdate`, `fm_sctrtime`, `fm_sctbaggage_weight`,  
`fm_sctfreight_weight`, `fm_sctpassenger`, `fm_sctinfant`, 
`fm_sctinfant_details`, `fm_sctinfant_dob`, `fmtp_id`, `fmtpi_id`, 
`jmcnt_id`, `fm_name`, `fm_company`, `fm_email`, `fm_phone`, `fmts_id`, 
`jmts_id`, `fm_pax_nbr`, `fm_hours_nbr`, `fmqt_id`, `fmtr_id`, 
`fm_sctnotes`, `fm_locdepart`, `fm_locarrive`, `fm_sctconsignment_weight`, 
`fm_sctconsignment_dimensions`, `fm_sctconsignment_desc`, `fm_sctdangerous`, 
`fm_scturgent`, `fm_sctspecial_instructions`, `fm_sctquote_type`, 
`fm_sctwork_type`, `fm_sctreoccuring`, `fm_sctaccommodation`, `fm_sctcar`, 
`fm_recdate`, `fm_recenddate`, `fm_recfrequency`, `fm_rectime`,  
`fm_medical`, `fm_medical_details`, `fm_user_ip`, `fm_dang_details`, 
`fm_sctsubstance`, `fm_sctpurchase_number`, `fm_role_id`, `fm_myrole_id`, 
`jm_myrole_id`, `fm_sctwork_point`, `fm_locdepartarrive`, `fm_sctnbr`, 
`fm_dateCreated`, `fm_cc`, `fm_gl`, `fm_timeCreated`, `jm_qtid`, `jmtp_id`, 
`jmtpi_id`, `jmsg_id`, `jms_id`, `jmsq_id`, `fms_id`, `fmcq_id`) VALUES 
(NULL, '1', '1', '0000-00-00', '1', '1', '1', 'sdfasd', 'No', 
'sdafdsafdsaf', 'dsfas', 'sdfasd', 'dsafds', '0', 'asdfds', 'sdfasd', 
'sdfads', 'sdaf', 'sdaf', 'sdaf', '0', '0', '0', '1sadfasdsda', 'sdfadsf', 
'as', 'as', 'as', 'asas', 'asd', 'No', 'No', 'adsfsd', 'eqwrqew', 'qewrqew', 
'No', 'No', 'No', '0000-00-00', '0000-00-00', 'ewqr', 'qewrw', 'No', 'eqwr', 
'ewqr', 'qewr', '', '', '', '', '', '', '', '0', '0000-00-00', '', '', 
'00:00:00.000000', '', '', '', '', '', '', '', NULL) 

Zaczęliśmy w obliczu tego problemu tuż po modernizacji mysql

+0

z phpmyadmin dla pola daty czy wpisujesz datę lub wybierasz z domyślnego wyboru daty? –

+0

Zostawiam próbnik daty taki, jaki jest. Ani data zmiany, ani data wprowadzenia ręcznie: – urfusion

+0

Nie jest to rozwiązanie, ale proponuję użyć 'NULL' zamiast' 0000-00-00', ponieważ nie jest to poprawna data. – Peter

Odpowiedz

21

błąd jest ze względu na tryb sql, który może być tryb ścisły jak na najnowszej dokumentacji MySQL 5.7.

Aby uzyskać więcej informacji przeczytaj this.

nadzieję, że to pomaga.

11

@ user2823136, jesteś w błędzie.

Po przejrzeniu zmian w MySQL 5.7, MYSQL przestaje obsługiwać zera w wartości data/datetime.

Używanie zera w datach lub datach nie jest poprawne, wystarczy wpisać zero zamiast zer.

Dzięki

+2

Tak, Mysql domyślnie przestaje używać wartości zerowych. Ale jak @KuKec wspomniany w komentarzu przez link możemy wyłączyć tryb ścisły i możemy użyć zerowych wartości. Więc jeśli dodasz te informacje również w swojej odpowiedzi, nie mam problemu z zaakceptowaniem tego. – urfusion

7

Masz 3 opcje, aby na swój sposób:
1. Określ wartość datę jak „1970-01-01”
2. Wybierz NULL z listy rozwijanej, aby utrzymać je puste.
3. Wybierz CURRENT_TIMESTAMP, aby ustawić bieżącą datę i czas jako wartość domyślną.

Powiązane problemy