* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit | |
CUBRID 10.2 (10.2.2.8874-f681dd9) (64bit release build for Linux) (Sep 1 2020 09:41:17) |
|
[도움말]-[버전정보] 확인 | |
odbc |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
아래와 같이 샘플 코드를 작성하여 타이머에 의해서 1초 간격으로 테이블을 읽어오도록 하였습니다.
테스트 도중에 메인 서버(nodeA라 설정 됨)에서 cubrid service stop 명령을 수행하였을 경우 스탠바이 서버(nodeB라 설정 됨)로 서비스는 정상적으로 절체가 됩니다.
그런데 응용프로그램에서는 아래 주석과 같은 익셉션 오류가 발생되는데 해결 방법을 알고 싶습니다.
public partial class MainWindow : Window
{
private CUBRIDConnection conn = null;
public MainWindow()
{
conn = new CUBRIDConnection() { ConnectionString = "ado:CUBRID:192.168.0.144:10302:rms:dba::?althosts=192.168.0.144:10303" };
conn.Open();
}
public void OnTimer1(object sender, EventArgs args)
{
try
{
using (CUBRIDCommand cmd = new CUBRIDCommand("select * from test order by id desc", conn))
{
// 절체테스트를 위해 master db 서비스를 stop 했을 경우 다음과 같은 exception 발생 됨!!
/*
예외 발생: 'System.InvalidOperationException'(CUBRID.Data.dll)
System.InvalidOperationException: Cannot communicate with server[CAS INFO-192.168.0.144:10302,1,8653].
위치: CUBRID.Data.CUBRIDClient.CUBRIDCommand.Prepare()
위치: CUBRID.Data.CUBRIDClient.CUBRIDCommand.BindParameters()
위치: CUBRID.Data.CUBRIDClient.CUBRIDCommand.ExecuteDbDataReader(CommandBehavior behavior)
위치: CubridTest.MainWindow.OnTimer1(Object sender, EventArgs args) 파일 c:\CubridTest\CubridTest\MainWindow.xaml.cs:줄 000
*/
CUBRIDDataReader r = (CUBRIDDataReader)cmd.ExecuteReader();
while (r.Read())
{
int c=0;
ID = r.GetInt(c++);
DT = r.GetDateTime(c++);
Locate = r.GetString(c++);
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
절체가 정상적으로 되었는지 확인해보시기 바랍니다.
nodeA>cubrid hb status (stand-by)
nodeB>cubrid hb status (active)
nodeB>cubrid changemode db_name@localhost