잘되던 DB연동이 갑자기 무조건 결과값을 1만 뱉어내고 나와버리네요 ;;;... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

잘되던 DB연동이 갑자기 무조건 결과값을 1만 뱉어내고 나와버리네요 ;;;... 정보

잘되던 DB연동이 갑자기 무조건 결과값을 1만 뱉어내고 나와버리네요 ;;;...

본문

기존에 잘되던 로그 생성 에이전트 파일이 있는데 무조건 쿼리 결과값(nNum의 값)을 1로만 뱉어내고 나와버립니다.
원래는 15969, 19839 머 이런 큰 숫자값이 나와야 정상이었거든요. 소스 파일 건든거 하나도 없고, 서버주소만 바뀌었을 뿐인데...(주소도 제대로 바뀐거 확인했고요. init 설정파일에도 주소값 제대로 설정되어서 DB접속도 잘 됩니다. 다른 데이터들이나 쿼리문들은 다 정상적으로 주고받고요. 요놈만 말썽이네요;...)

다음은 소스입니다.

while(true)
{
bzero(Query,sizeof(Query));
sprintf(Query," select i_num from %s where dt_indate < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL '-7' DAY), '%%Y-%%m-%%d 00:00:00') LIMIT 0, 100 ",_QUERY1_);

pDB->ExeQuery(Query);
pDB->StoreResult(&mrDataForRemove);

int nRows = mrDataForRemove.GetNumRows();
Print("Query : %s, Rows Count : %d",Query,nRows);
if(nRows <= 0) break;

for(int row=0;row < nRows;row++)
{
mrDataForRemove.FetchRow();
mrDataForRemove.GetData(1,nNum);

sprintf(Query," delete from %s where i_num = %d",_QUERY1_,nNum);
Print("DataRemove Query : %s", Query);
if(!pDB->ExeQuery(Query))
{
InsertErrorLog(Query);
bError = true;
break;
}

}
mrDataForRemove.FreeResult();
if(bError) break;
}
sleep(10);

기존에는 for문 안에서(nRows값은 현재 100입니다.) nNum의 숫자값만큼 반복문으로 다 뿌리고 나왔는데 무조건 mrDataForRemove.GetData(1,nNum); 이 함수에서 nNum 값이 1만 뿌리고는 반복문이 종료되는거 같습니다.


FetchRow()함수는
bool MysqlRes::FetchRow( )
{
if(!m_mysqlRes) return false;

m_mysqlRow = mysql_fetch_row(m_mysqlRes);
return true;
}
GetData함수는
bool MysqlRes::GetData( const int p_nIdx, int & p_nRetValue )
{
if(p_nIdx<1 || !m_mysqlRes) return false;

p_nRetValue = 0;
if(mysql_num_fields(m_mysqlRes)<p_nIdx) return false;
if(!m_mysqlRow[p_nIdx-1]) return false;

p_nRetValue = atoi(m_mysqlRow[p_nIdx-1]);

return true;

}

만약 쿼리문이 잘못되어 실행 실패라면 if(!pDB->ExeQuery(Query)) 이 루틴을 타고 들어가 에러로그파일에 값을 넣어야 하는데 에러로그 파일이 깨끗하고요. 도대체 뭐가 원인인지 잘 모르겠네요. ㅠ.ㅠ
  • 복사

댓글 전체

select i_num from %s where dt_indate < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL '-7' DAY), '%%Y-%%m-%%d 00:00:00') LIMIT 0, 100
이부분에서 날리신 쿼리문을 테이블명 넣어서 db에 직접 입력해 보세요
© SIRSOFT
현재 페이지 제일 처음으로