>  기사  >  데이터 베이스  >  MySQL 저장 프로시저를 사용할 때 Python에서 \'명령이 동기화되지 않음\' 오류를 수정하는 방법은 무엇입니까?

MySQL 저장 프로시저를 사용할 때 Python에서 \'명령이 동기화되지 않음\' 오류를 수정하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-22 11:25:11294검색

How to Fix the

MySQL에서 저장 프로시저와 인터페이스할 때 Python에서 "명령이 동기화되지 않음" 오류 해결

Python에서 Django를 활용하여 저장된 실행을 실행하는 동안 MySQL 프로시저에서 발생하는 일반적인 오류는 "명령이 동기화되지 않았습니다. 지금은 이 명령을 실행할 수 없습니다."입니다. 이 오류는 트랜잭션이 계속 진행 중인 상태에서 프로시저 호출 후 두 번째 명령문을 실행하려고 할 때 발생합니다.

이 문제를 해결하려면 프로시저 실행에 사용된 커서를 닫고 이전에 새 커서를 생성하는 것이 중요합니다. 후속 문 실행:

cursor.close()

cursor = connection.cursor()

프로시저 호출에서 결과를 가져온 후 즉시 커서를 닫을 수 있습니다. 결과 집합은 영향을 받지 않으며 계속 액세스할 수 있습니다.

단순한 MySQL 절차를 예로 들어 보겠습니다.

delimiter $$
create procedure my_mysql_procedure(p_page_id int)
begin

        select 1
        from dual; 

    end$$
delimiter ;

Python 내에서 시도할 때 "명령이 동기화되지 않았습니다"라는 오류가 발생합니다. 다음 코드에서 볼 수 있듯이 프로시저를 호출한 후 다른 문을 실행하려면:

cursor.callproc('my_mysql_procedure', [some_id,]) 
result = cursor.fetchall()
for r in result:
    do something

cursor.execute("select * from some_table")
result = cursor.fetchall()

커서를 닫았다가 다시 엽니다. 프로시저 호출 후 오류가 제거되고 후속 문을 문제 없이 실행할 수 있습니다. 이 솔루션을 사용하면 MySQL이 올바른 명령 순서를 유지하고 후속 데이터베이스 작업을 원활하게 실행할 수 있습니다.

위 내용은 MySQL 저장 프로시저를 사용할 때 Python에서 \'명령이 동기화되지 않음\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.