Error Code: 1242. Subquery returns more than 1 row
본문
첨 보는 에러라서 질문 남겨봅니다.
쿼리를 다 올려드릴 수는 없습니다만...
MySQL 5.6에서는 쿼리가 정상 동작하는데...
MariaDB 10 에서는 제목과 같은 에러가 발생합니다.
구글링을 해도 잘 안찾아지네요.
쿼리를 고치면 간단한 문제이긴 하지만, 버전상의 문제라면 좀 심각해지는거라서요.
혹시나 MariaDB가 버전 업이 되면서 이전 버전에서는 허용하던것을 막은건지
그렇다면 MariaDB에서 옵션을 설정하여 해결할 수 있는 것인지 궁금하네요.
(옵션을 통한 해결이 가장 해피하긴 한데...)
SubQuery 관련하여 DB 버전에 따라 에러가 발생하는걸
경험하신 분이 있으신지 궁금하여 문의 남겨봅니다.
Mysql 5.6.15 에서는 정상적으로 수행됩니다.
MariaDB 10 버전에서는 아래와 같이 에러가 발생하네요.
답변 2
에러자체는 서브쿼리의 리턴값이 1개의 행이여야하는데 여러 행이라는 뜻입니다.
해당 서브쿼리를 직접 날려서 리턴값이 한개인지 여러개인지 확인해보세요.
구글링을 더 해보니, subquery에 관련한 버그가 꽤나 있었나보더군요. Mysql 5.6 버전에서요.
느려진다거나, 너무 많은 수의 row를 반환한다거나...
https://bugs.mysql.com/bug.php?id=83286
뭐 그래서...
걍 그 버전때에서는 subquery의 불완전함(불안정함?)으로 인하여
잘못 된 쿼리를 정상으로 처리하는 버그가 있었던 것 같다고 결론을 내리고...
쿼리를 수정하는 방향으로 잡았네요. (일이 더 늘었네요 ㅠㅠ)
사실 쿼리가 잘못되어있긴 하더라구요.
그런데 뭐 잘 돌아가니까 전 개발자가 그대로 두었겠죠 ㅠㅠ
넘겨받은 제가 안아야 할 문제 ㅠㅠ
오늘 배운 점은!!!
상용서버와 개발서버는 모든 환경이 동일해야 한다!!! 는 것이네요.
개발서버에 DB를 두개 깔기 싫었는데... 에휴...
상용과 같은 버전으로 포트를 다르게 해서 하나 더 깔아야겠어요 ㅠㅠ
그래도 혹시 옵션으로 어쩔 방법이 없는지...
일단 다른 일 하다가 저녁에 다시 해야겠어요~