'mysql 에러'에 해당되는 글 1건
▷ 모든 API함수에 대한 오류는 에러 코드를 되돌려 줌으로서 나타나며,
세부 내용은 접속 처리 구조체를 통해 알려준다.
오류 메시지를 처리할 때 다음과 같인 두 개의 루틴만 알고 있으면 된다.
mysql_errno() - 가장 최근에 실행된 MySQL API 함수의 에러 코드를 리턴. | |
형태 | unsigned int mysql_errno(MYSQL *mysql) |
인수 | mysql: MYSQL* 핸들 |
반환값 | 에러가 있을 경우: 마지막으로 호출된 API함수(mysql()_xxx)를 위한 에러 코드. 에러가 없을 경우: 0(zero) |
mysql_error() - 가장 최근에 실행된 MySQL API 함수의 에러 메시지 문자열 리턴. | |
형태 | const char *mysql_errno(MYSQL *mysql) |
인수 | mysql: MYSQL* 핸들 |
반환값 | 에러가 있을 경우: 마지막으로 호출된 API함수(mysql()_xxx)를 위한 에러 메시지 문자열. 에러가 없을 경우: 빈 문자열. |
▶ mysql_error()함수의 메시지는 내부의 정적 공간이므로,
오류 메시지를 저장하려면 메시지를 다른 위치에 복사하면 된다.
▶ mysql_errno() 함수에 의해 리턴된 MySQL-지정 에러 숫자들은
mysql_sqlstate() 함수에 의해 리턴된 SQLSTATE 값과 다르다.
예를 들어, mysql 클라이언트 프로그램은 다음 포맷을 사용 중인 에러들을 보여준다.
여기서 1146 은 mysql_errno() 함수 값이고, '42S02'는 mysql_sqlstate() 함수 값과 일치한다:
shell> SELECT * FROM no_such_table; ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist |
주의:
mysql_fetch_row() 같은 몇몇 함수들은 성공하면 mysql_errno()를 설정하지 않음.
(경험적으로 서버에 정보를 요구하는 함수는, 성공했을 경우에 mysql_errno()를 재설정)
에러 메시지가 기술된 헤더 파일:
클라이언트 에러 메시지 숫자: MySQL errmsg.h 헤더 파일에 기술.
서버 에러 메시지 숫자 : mysqld_error.h 헤더 파일에 기술.
예제:
MYSQL mysql; … mysql_init(&mysql); mysql_option(&mysql, MYSQL_READ_DEFAULT_GROUP, "your_prog_name"); if ( ! mysql_real_connect(&mysql, "host", "user", "passwd", "database", 0, NULL, 0)) { ■■■■fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql)); } … |
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
mysql_[real_]query() - SQL 쿼리 실행 (0) | 2011.07.12 |
---|---|
mysql_options() - 연결 옵션을 설정 (0) | 2011.07.12 |
mysql_real_connect() - MySQL 데이터베이스 연결 (0) | 2011.07.11 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |