fix: Oracle INSERT 자동 커밋 추가
문제: - 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는 영향 없음 - ✅ 오라클 데이터 정상 저장
This commit is contained in:
parent
8615a358c0
commit
852075c799
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue