programing

MySQL/MariaDB FOUND_ROWS에서 행이 반환되지 않았더라도 1이 반환됨

yoursource 2022. 10. 22. 13:10
반응형

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

반응형