기본적으로 MySQL 용 커넥터 C 드라이버를 사용하여 MySQL 데이터베이스에 연결하려고합니다. Linux 시스템에서 Netbeans로 코드를 작성하고 있습니다. 그러나 여기에 수수께끼가 있습니다. 디버그 모드에서는 데이터베이스에 연결할 수 있지만 릴리스 모드에서는 연결할 수 없습니다 ??? Linux에서 Netbeans를 IDE로 사용하고 있으며 모든 라이브러리를 설정하고 프로젝트 속성 아래의 드롭 다운을 사용하여 폴더를 포함하여 디버그 구성 및 릴리스 구성 모두에 속성을 적용하지만 나중에 데이터베이스에 연결합니다. 디버그에서 실행하지만 실행에서 실행할 때 실행-??? 실제 연결 코드를 보여주기 위해 코드를 단순화했습니다.
int readDB(void) {
MYSQL *mysql = NULL;
char *server = "localhost";
char *user = "root";
char *password = "";
char *database = "myDB";
int port = 3306;
mysql = mysql_init(mysql);
if (!mysql) {
puts("Init failed, out of memory?");
return EXIT_FAILURE;
} else {
puts("SUCCESS!\n");
}
if (!mysql_real_connect(mysql,server,user,password,database,port,NULL,0)) {
puts("Connect failed\n");
}
return 1;
}
그래서 디버그에서 실행하면 "SUCCESS"만 출력되고 다른 것은 출력되지 않습니다. 실행하면 "SUCCESS"와 "Connect failed"가 인쇄됩니다. 나는 헤매고있다. 이것이 IDE에 문제가 될 수 있습니까? 내가 고려해야 할 Linux에서 잘 작동하는 또 다른 C 용 IDE가 있습니까? 아니면 분명한 것을 놓치고 있습니까?
업데이트 : mysql_error () 호출 공개
"소켓 '/tmp/mysql.sock'(2)를 통해 로컬 MySQL 서버에 연결할 수 없습니다."
C를 포함한 대부분의 언어에서 mysql 클라이언트 라이브러리를 사용할 때 호스트 이름이 localhost
클라이언트 라이브러리 로 지정 되면 유닉스 도메인 소켓을 통해 연결을 시도합니다. 호스트 이름을 다음과 같이 지정하여 TCP / IP를 사용하여 강제로 연결할 수 있습니다.127.0.0.1
예 그들은 하나이고 동일 하지만
unix_socket이 NULL이 아닌 경우 문자열은 사용할 소켓 또는 명명 된 파이프를 지정합니다. 호스트 매개 변수는 연결 유형을 결정합니다.
또는 mysql 구성을 검사하여 서버가 시작될 때 소켓이 생성 된 위치를 찾고이를 unix_socket 매개 변수로 사용할 수 있습니다.
세 번째 대안은 서버 구성을 변경하여 / tmp /에 소켓을 만드는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다