programing

MySQL은 다른 세션에 삽입된 행을 선택할 수 없습니다.

goodsources 2022. 10. 20. 21:22
반응형

MySQL은 다른 세션에 삽입된 행을 선택할 수 없습니다.

제 질문은 제목에 있습니다.

응용 프로그램에서 MySQL 세션을 열면 해당 응용 프로그램이 다른 세션을 만드는 스크립트를 호출합니다.새 세션에 레코드를 삽입하지만 이전 세션에서 선택하면 삽입된 행을 볼 수 없습니다.

다음은 삽입 쿼리입니다.

INSERT INTO VCS.project_files (track_nbr, path, filename)
     VALUES ('$track_nbr', '$path', '$filename');

다음은 선택 항목입니다.

SELECT pf.project_file_id, pf.track_nbr, pf.filename, pf.path, pf.status
    FROM VCS.project_files pf;

이는 '반복 가능한 읽기'로 설정된 격리 수준 때문이라는 것을 알게 되었습니다.'반복 가능한 읽기'는 말하는 그대로를 의미하며, 이전 세션에서 읽은 각 읽기에는 동일한 행이 지정됩니다.

이 문제를 해결하려면 다음을 수행하여 데이터베이스를 'read committed'로 설정해야 합니다.

  1. 에 행 /etc/my.cnf (우분투)/etc/my.cnf.d/my.cnf (CentOS):

    [mysqld]
    binlog_format = row
    transaction-isolation = READ-COMMITTED
    
  2. MySQL 재시작 중(Ubuntu):

    sudo service mysql restart
    

그러면 모든 세션에서 다른 세션에서 커밋된 변경을 볼 수 있습니다.

Oracle 데이터베이스(기본적으로 읽기 커밋됨)에 익숙하고 MySQL은 다릅니다(기본적으로 반복 가능한 읽기).

언급URL : https://stackoverflow.com/questions/35470745/mysql-cannot-select-a-row-inserted-in-a-different-session

반응형