티스토리 뷰

반응형

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by num desc' at line 1

SQLSTATE[HY000]: General error: 1525 Incorrect DATE value: ''

위의 오류는 아래의 원인으로 발생합니다.

참고하시면 좋겠어요.


오류: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by num desc' at line 1

이 오류는 MySQL 서버 버전에 맞지 않는 SQL 구문을 사용하고 있을 때 발생합니다. "order by num desc" 부분에서 오류가 발생하고 있는데, 아마도 해당 쿼리의 문제가 될 수 있습니다. 정확한 오류를 해결하기 위해서는 쿼리 전체를 봐야 합니다만, "order by" 절의 문제로 보입니다.

MySQL에서 "order by" 절을 사용할 때는 정렬하려는 열과 정렬 방향을 지정해야 합니다. "desc"는 내림차순(큰 값부터 작은 값으로)으로 정렬하겠다는 것을 나타내는데, 이것이 올바르게 사용되었는지 확인해야 합니다.

예를 들어, "num"이라는 열을 내림차순으로 정렬하려면 다음과 같이 작성해야 합니다.

$sql : select * from dbchandj.motor where (deadline='' OR deadline='0000-00-00) ' and orderdate between '2024-04-05' and '2024-05-05' and is_deleted IS NULL order by num desc 

제시된 SQL 쿼리에서 오류가 발생하는 부분을 보니, "deadline" 열에서 문자열 값을 비교할 때 따옴표를 제대로 닫지 않은 것으로 보입니다. "0000-00-00"에 대한 따옴표를 닫지 않았습니다.

select * from dbchandj.motor where (deadline='' OR deadline='0000-00-00') and orderdate between '2024-04-05' and '2024-05-05' and is_deleted IS NULL order by num desc
위와 같이 따옴표를 제대로 닫아주면 쿼리가 올바르게 동작할 것입니다.


오류: SQLSTATE[HY000]: General error: 1525 Incorrect DATE value: ''

이 오류는 날짜 값을 비교할 때 잘못된 형식의 날짜가 사용되었을 때 발생합니다. 예상치 못한 형식의 날짜가 사용되었거나 누락된 것으로 보입니다.

여기서 주목해야 할 부분은 "deadline" 열에 대한 조건부 검색입니다. "deadline" 열이 비어 있거나 "0000-00-00"이라는 날짜인 경우를 찾으려고 하고 있습니다.

그러나 오류 메시지에서 알 수 있듯이 MySQL은 ''(빈 문자열)을 유효한 날짜 값으로 처리하지 않습니다. 대신에 빈 문자열 대신 NULL을 사용해야 합니다.

따라서 쿼리를 수정하여 빈 문자열을 NULL로 변경해야 합니다.

다음은 수정된 쿼리입니다:

select * from dbchandj.motor where (deadline IS NULL OR deadline='0000-00-00') and orderdate between '2024-04-05' and '2024-05-05' and is_deleted IS NULL order by num desc
위 쿼리에서는 "deadline"이 NULL이거나 '0000-00-00'인 경우를 선택하고 있습니다. 이제 이 쿼리를 실행하면 오류 없이 결과를 얻을 수 있어야 합니다.

문제는 해결되었습니다.

결국 컬럼의 deadline을 ''으로 하면 위의 오류가 나온다는 결론에 이릅니다.

deadline IS NULL 로 해야 겠네요~

한수 배웠습니다.

 

반응형
댓글