MySQL/MariaDB FOUND_ROWS에서 행이 반환되지 않았더라도 1이 반환됨
MariaDB 버전 5.56을 실행하고 있는데, 0 행을 반환하는 SELECT 뒤에 FOUND_ROWS()가 '1'을 반환하는 버그가 발생하고 있는 것 같습니다.
버그 리포트 83110에 따르면 MySQL은 버전 5.7.15에서 이 문제가 발생했지만 종료된 문제인 것으로 보여 수정되었다고 생각했습니다.그러나 MySQL과 MariaDB 버전 번호가 어떻게 관련되어 있는지, MySQL에 대한 수정이 MariaDB에 적용되어 있는지 알 수 없습니다.
내 배포판의 패키지에는 사용 가능한 최신 버전으로 MariaDB 5.56이 포함되어 있습니다.
내가 뭘 잘못하고 있나요?이전 쿼리가 0 결과를 반환했는데 FOUND_ROWS가 1을 반환하는 이유는 무엇입니까?(예, 이전 쿼리에 SQL_CALC_FOUND_ROWS 문을 포함했습니다.
예제:
SELECT SQL_CALC_FOUND_ROWS * FROM table1
WHERE field = 'something that would not match any records' LIMIT 5;
SELECT FOUND_ROWS() as count_of_rows;
-- count_of_rows = 1
MariaDB에서 단순히 패치되지 않은 동일한 버그일 수도 있고, 아니면 제가 잘못하고 있다고 생각하시나요?
감사합니다!
MariaDB 5.5는 MySQL 5.7(모든 버그 포함)과 일치합니다.MariaDB는 JIRA(https://jira.mariadb.org/)를 사용하며 SQL_CALC_FOUND_ROWS에서 몇 가지 다른 버그가 해결되었음을 알 수 있습니다.
MariaDB 10.3(현재 GA 릴리즈)에서 테스트하여 샘플 스키마를 작성했습니다.
create table foo (id integer primary key, name varchar(50));
몇 개의 행을 삽입했습니다.
insert into foo(id, name) values (1, 'Bob');
insert into foo(id, name) values (2, 'Chris');
insert into foo(id, name) values (3, 'David');
insert into foo(id, name) values (4, 'Esther');
insert into foo(id, name) values (5, 'Fred');
insert into foo(id, name) values (6, 'Ginger');
쿼리가 동작했습니다.foo에서 sql_sql_found_rows*를 선택합니다.여기서 name = 'x' limit 5;
SELECT FOUND_ROWS() as count_of_rows;
+---------------+
| count_of_rows |
+---------------+
| 0 |
+---------------+
1 row in set (0.010 sec)
언급URL : https://stackoverflow.com/questions/47556655/mysql-mariadb-found-rows-returns-1-even-if-no-rows-were-returned
'programing' 카테고리의 다른 글
python 요청 시간 초과.전체 응답 가져오기 (0) | 2022.10.22 |
---|---|
wait는 비동기 기능에서만 유효합니다. (0) | 2022.10.22 |
?: PHP의 연산자('Elvis 연산자') (0) | 2022.10.12 |
MySQL 테이블에서 제약을 제거하는 방법 (0) | 2022.10.12 |
데이터베이스 복원 시 이모티콘이 유지되지 않음 (0) | 2022.10.12 |