Error Code: 1242. Subquery returns more than 1 row

Error Code: 1242. Subquery returns more than 1 row

QA

Error Code: 1242. Subquery returns more than 1 row

답변 2

본문

첨 보는 에러라서 질문 남겨봅니다.

 

쿼리를 다 올려드릴 수는 없습니다만...

MySQL 5.6에서는 쿼리가 정상 동작하는데...

MariaDB 10 에서는 제목과 같은 에러가 발생합니다.

구글링을 해도 잘 안찾아지네요.

 

쿼리를 고치면 간단한 문제이긴 하지만, 버전상의 문제라면 좀 심각해지는거라서요.

혹시나 MariaDB가 버전 업이 되면서 이전 버전에서는 허용하던것을 막은건지

그렇다면 MariaDB에서 옵션을 설정하여 해결할 수 있는 것인지 궁금하네요.

(옵션을 통한 해결이 가장 해피하긴 한데...)

 

SubQuery 관련하여 DB 버전에 따라 에러가 발생하는걸

경험하신 분이 있으신지 궁금하여 문의 남겨봅니다.

 

Mysql 5.6.15 에서는 정상적으로 수행됩니다.

2949618301_1597162256.4242.png

 

MariaDB 10 버전에서는 아래와 같이 에러가 발생하네요.

2949618301_1597162378.6013.png

 

이 질문에 댓글 쓰기 :

답변 2

에러자체는 서브쿼리의 리턴값이 1개의 행이여야하는데 여러 행이라는 뜻입니다.
해당 서브쿼리를 직접 날려서 리턴값이 한개인지 여러개인지 확인해보세요.

구글링을 더 해보니, subquery에 관련한 버그가 꽤나 있었나보더군요. Mysql 5.6 버전에서요.

느려진다거나, 너무 많은 수의 row를 반환한다거나...

https://bugs.mysql.com/bug.php?id=83286

 

뭐 그래서...

걍 그 버전때에서는 subquery의 불완전함(불안정함?)으로 인하여

잘못 된 쿼리를 정상으로 처리하는 버그가 있었던 것 같다고 결론을 내리고...

쿼리를 수정하는 방향으로 잡았네요. (일이 더 늘었네요 ㅠㅠ)

 

사실 쿼리가 잘못되어있긴 하더라구요.

그런데 뭐 잘 돌아가니까 전 개발자가 그대로 두었겠죠 ㅠㅠ

넘겨받은 제가 안아야 할 문제 ㅠㅠ

 

오늘 배운 점은!!!

상용서버와 개발서버는 모든 환경이 동일해야 한다!!! 는 것이네요.

 

개발서버에 DB를 두개 깔기 싫었는데... 에휴...

상용과 같은 버전으로 포트를 다르게 해서 하나 더 깔아야겠어요 ㅠㅠ

 

그래도 혹시 옵션으로 어쩔 방법이 없는지...

일단 다른 일 하다가 저녁에 다시 해야겠어요~

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 38
© SIRSOFT
현재 페이지 제일 처음으로