Моя клиентская программа на C подключается к серверу MySQL. Я могу подключиться, но проблема возникает, когда я пытаюсь реализовать коды обнаружения ошибок. Если я сделаю следующее (здесь я намеренно указал неправильное имя пользователя):
#include "mysql.h"
int main()
{
MYSQL* conn_ptr_db;
conn_ptr_db = mysql_init(NULL);
if(!conn_ptr_db)
{
perror("Error connecting to MySQL! ");
exit(0);
}
if(mysql_real_connect(conn_ptr_db,"localhost","rooti","root","mysql",0,NULL,0))
{
printf("Hurrah! we have connected to MySQL! ");
mysql_close(conn_ptr_db);
}
else
{
printf("Connection failed to MySQL! \n");
printf("Error code: %d %s %s\n",mysql_errno(conn_ptr_db),mysql_sqlstate(conn_ptr_db),mysql_error(conn_ptr_db));
}
//mysql_close(conn_ptr_db);
return 0;
}
Теперь вывод этой программы:
. / Db_access
Не удалось подключиться к MySQL!
Код ошибки: 1045 28000 Доступ запрещен для пользователя 'rooti' @ 'localhost' (с использованием пароля: ДА)
Это правильный вывод.
Но если я сделаю следующее:
#include "mysql.h"
int main()
{
MYSQL* conn_ptr_db;
conn_ptr_db = mysql_init(NULL);
if(!conn_ptr_db)
{
perror("Error connecting to MySQL! ");
exit(0);
}
//CHANGES -------------
conn_ptr_db = mysql_real_connect(conn_ptr_db,"localhost","rooti","root","mysql",0,NULL,0);
if(conn_ptr_db)
{
printf("Hurrah! we have connected to MySQL! ");
mysql_close(conn_ptr_db);
}
else
{
printf("Connection failed to MySQL! \n");
printf("Error code: %d %s %s\n",mysql_errno(conn_ptr_db),mysql_sqlstate(conn_ptr_db),mysql_error(conn_ptr_db));
}
//mysql_close(conn_ptr_db);
return 0;
}
Я получаю следующий вывод:
./db_access
Не удалось подключиться к MySQL!
Код ошибки: 0 08001
Здесь mysql_errno () и mysql_error () не работают. Зачем?