개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.26 05:26

오라클 DB 연동 오류: oci_commit() 사용 방법

목록
  • 반응형디자인매니아 24일 전 2025.06.26 05:26
  • 74
    1
제가 오라클 DB와 연동하는 프로젝트에서 oci_commit() 함수를 사용하여 트랜잭션을 커밋하는 부분에서 오류가 발생하고 있습니다.

해당 함수를 사용한 예제는 다음과 같습니다.
sql

conn = oci.connect('username/password@host:port/service_name')

cursor = conn.cursor()

cursor.execute("INSERT INTO 테이블명 VALUES ('가', '나', '다')")

conn.commit()  # 이 부분에서 오류가 발생합니다.


오류 메시지는 다음과 같습니다.


ORA-01036: 로그인 실패


오라클 DB 연동 오류: oci_commit() 사용 방법에 대해 도움을 요청합니다.

1. oci_commit() 함수를 사용하여 트랜잭션을 커밋하는 방법에 대해 알려주세요.
2. 위의 예제에서 오류가 발생하는 이유를 설명해주세요.
3. 오류를 해결하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  24일 전



    1. oci_commit() 함수는 Oracle Database와의 연결을 커밋하는 데 사용됩니다. 커밋을 수행하기 전에, INSERT, UPDATE, DELETE와 같은 DML 명령어를 수행한 후에 커밋을 해야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    python
    
    conn = oci.connect('username/password@host:port/service_name')
    
    cursor = conn.cursor()
    
    cursor.execute("INSERT INTO 테이블명 VALUES ('가', '나', '다')")
    
    cursor.execute("UPDATE 테이블명 SET 컬럼명 = '가' WHERE 조건")
    
    cursor.execute("DELETE FROM 테이블명 WHERE 조건")
    
    conn.commit()
    
    


    2. 위의 예제에서 오류가 발생하는 이유는, 커밋을 수행하기 전에 DML 명령어를 수행한 후에 커밋을 해야 하기 때문입니다. 하지만, 위의 예제에서는 커밋을 수행하기 전에 DML 명령어를 수행한 후에 커밋을 수행하지 않았습니다. 따라서, 오라클 DB와의 연결이 실패하여 오류가 발생합니다.

    3. 오류를 해결하는 방법은, 커밋을 수행하기 전에 DML 명령어를 수행한 후에 커밋을 수행하는 것입니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    python
    
    conn = oci.connect('username/password@host:port/service_name')
    
    cursor = conn.cursor()
    
    cursor.execute("INSERT INTO 테이블명 VALUES ('가', '나', '다')")
    
    conn.commit()
    
    
    
    cursor.execute("UPDATE 테이블명 SET 컬럼명 = '가' WHERE 조건")
    
    conn.commit()
    
    
    
    cursor.execute("DELETE FROM 테이블명 WHERE 조건")
    
    conn.commit()
    
    


    또는, DML 명령어를 수행한 후에 커밋을 수행하기 전에, 커서를 닫고 다시 커서를 열어야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    python
    
    conn = oci.connect('username/password@host:port/service_name')
    
    cursor = conn.cursor()
    
    cursor.execute("INSERT INTO 테이블명 VALUES ('가', '나', '다')")
    
    
    
    cursor.close()
    
    cursor = conn.cursor()
    
    conn.commit()
    
    
    
    cursor.execute("UPDATE 테이블명 SET 컬럼명 = '가' WHERE 조건")
    
    conn.commit()
    
    
    
    cursor.execute("DELETE FROM 테이블명 WHERE 조건")
    
    conn.commit()
    
    

    2025-06-26 05:27

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,390건 / 9 페이지

검색

게시물 검색