From 852075c7995c83ec1d3766d115845cb265fbd7fa Mon Sep 17 00:00:00 2001 From: kjs Date: Wed, 1 Oct 2025 17:34:56 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Oracle=20INSERT=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EC=BB=A4=EB=B0=8B=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 문제: - Oracle DB에 INSERT 해도 데이터가 실제로 저장되지 않음 - executeQuery에서 autoCommit 옵션이 없었음 수정: 1. 쿼리 타입 확인 (INSERT/UPDATE/DELETE/MERGE) 2. DML 쿼리는 autoCommit: true 설정 ✅ 3. SELECT 쿼리는 autoCommit: false (기본값) 로깅 추가: - isDML 확인 - autoCommit 상태 - rowsAffected 추가 결과: - ✅ INSERT 실행 후 자동 COMMIT - ✅ UPDATE/DELETE도 자동 COMMIT - ✅ SELECT는 영향 없음 - ✅ 오라클 데이터 정상 저장 --- backend-node/src/database/OracleConnector.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/backend-node/src/database/OracleConnector.ts b/backend-node/src/database/OracleConnector.ts index b9360570..e68346d8 100644 --- a/backend-node/src/database/OracleConnector.ts +++ b/backend-node/src/database/OracleConnector.ts @@ -99,23 +99,35 @@ export class OracleConnector implements DatabaseConnector { try { const startTime = Date.now(); + // 쿼리 타입 확인 (DML인지 SELECT인지) + const isDML = /^\s*(INSERT|UPDATE|DELETE|MERGE)/i.test(query); + // Oracle XE 21c 쿼리 실행 옵션 const options: any = { outFormat: (oracledb as any).OUT_FORMAT_OBJECT, // OBJECT format maxRows: 10000, // XE 제한 고려 - fetchArraySize: 100 + fetchArraySize: 100, + autoCommit: isDML // ✅ DML 쿼리는 자동 커밋 }; + console.log('Oracle 쿼리 실행:', { + query: query.substring(0, 100) + '...', + isDML, + autoCommit: options.autoCommit + }); + const result = await this.connection!.execute(query, params, options); const executionTime = Date.now() - startTime; console.log('Oracle 쿼리 실행 결과:', { query, rowCount: result.rows?.length || 0, + rowsAffected: result.rowsAffected, metaData: result.metaData?.length || 0, executionTime: `${executionTime}ms`, actualRows: result.rows, - metaDataInfo: result.metaData + metaDataInfo: result.metaData, + autoCommit: options.autoCommit }); return {