programing

동일한 쿼리, 다른 결과

telecom 2023. 8. 18. 20:52
반응형

동일한 쿼리, 다른 결과

매일 크론을 실행하고 레코드를 테이블에 저장합니다.사용자의 일일 진행률을 보기 위해 쿼리를 작성했지만 문제가 발생했습니다.
별도의 데이터베이스가 있는 로컬 환경과 프로덕션 환경이 있습니다.

SELECT *, LAG(value) OVER(PARTITION BY node_id ORDER BY created_at) old_value
FROM ledger WHERE ledger_type_id = 1

이것이 실패하고 있는 쿼리의 일부입니다.제 생각에 db 드라이버가 그것을 하고 있는 것 같습니다.쿼리가 SQL 클라이언트에서 prod 데이터베이스에서 작동하고 있었지만 MySQL 8을 실행하고 있으며 proddb는 10.3.16-MariaDB입니다.로컬 데이터베이스 MySQL 5.7에서 동일한 쿼리를 시도했지만 다음 오류가 발생했습니다.

[2019-08-06 16:12:47] [42000][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 '(PARTITION BY node_id ORDER BY created_at) AS old_value

그 후에 저는 두 가지 테스트를 더 했습니다.

  1. phpmyadmin을 통해 prod 서버 자체에서 쿼리를 실행하고 몇 분 동안 서버가 완전히 종료되었습니다.
  2. 제품 환경에서 내 코드에서 쿼리 실행(라벨 5.8):
DB::select(DB::raw('
    SELECT *, LAG(value) OVER(
    PARTITION BY node_id ORDER BY created_at
    ) old_value
    FROM ledger WHERE ledger_type_id = 1
'))

그리고 이것을 내 라벨 로그에 넣었습니다.

production.ERROR: SQLSTATE[42000]: Syntax error or access violation:
1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is
illegal if there is no GROUP BY clause

제가 잘못된 행동을 하고 있나요?

언급URL : https://stackoverflow.com/questions/57377038/same-query-different-results

반응형