현재 Linux 프로덕션 서버에만 배포 된 기존 응용 프로그램을 변경하라는 요청을 받았습니다. 필자는 로컬 Windows PC에서 대부분의 응용 프로그램을 사용하도록했습니다. 로컬 PC에 Production의 MySQL
DB의 전체 사본이 설치되어 있습니다. Linux의 Production DB는 MySQL v5.0.95
이고 Windows의 로컬 DB는 MySQL v5.5
입니다. 둘 다 InnoDB 모드에있다.MySQL 오류 코드 : 1411. str_to_date 함수에 대해 잘못된 datetime 값 : ''
제 문제는 다음과 같은 내용입니다. 도움을 청하는 사람들이 쉽게 사용할 수 있도록 일반용으로 제작되었습니다. 생산에 문제가 발생하여 레코드를 갱신/저장할 수 있지만 로컬이 SQLException
가 발생 할 수 있습니다하지 않는 빈 문자열이 전달되는 경우에
update atable
set adate=DATE_ADD(str_to_date('','%m/%d/%Y'), INTERVAL 0 DAY)
where anum='1'
. 그래서 내 로컬 DB에 대해 SQL
문을 직접 시도하고 두 경우 모두 다음과 같은 오류 메시지가 나타납니다.
오류 코드 : 1411 잘못된 날짜 시간 값 : 모든 주요 차이점을 찾고 내가 생산
my.cnf
을 검토 한
기능 STR_TO_DATE 내 지역 my.ini
을 위해 ''나는 또한에 시도 로컬에서는 SQL 모드 "ALLOW_INVALID_DATES
"을 사용하지만 최종 결과는 변경되지 않았습니다.
이 빈 문자열을 전달하지 않도록 코드를 변경할 수 있음을 알고 있지만이 경우 많은 문이 있으며 가능하면이 모든 것을 변경하고 싶지 않습니다. 이 고객에게는 제한된 예산과 일정이 있으므로 새로운 요구 사항에 중점을두고 싶습니다. 가능하다면 Production에서와 같이 로컬 환경을 어떻게 작동시킬 수 있는지에 대한 의견을 찾고 있습니다.
감사합니다.
'' ''은 (는) 유효한 날짜가 아닙니다. 어떤 날짜를 추가해야합니까? 현재 날짜? –
아니요, 로컬 및 프로덕션 모두에서 빈 문자열로 전달됩니다. 나는 그것이 이상하다는 것을 안다. 그리고 나는 그것이 생산에서 어떻게 작동 하는지를 잘 모르고있다. 그러나 그것은 그렇다. – ItBHarsH