C программа MySQL соединение - PullRequest
3 голосов
/ 11 августа 2010

Я работаю над простой программой на c, которая должна соединиться с моей базой данных, затем выполнить запрос и затем закрыть соединение.

int main()
{
    MYSQL *conn;
    conn = mysql_init(NULL);

    if (conn == NULL) {
        printf("Error %u %s\n", mysql_errno(conn), mysql_error(conn));
        exit(1);
    }

    if (mysql_real_connect(conn, "localhost", "root", "root", NULL, 8889, NULL, 0)) {
        printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));
        exit(1);
    }

    if (mysql_query(conn, "create database testdb")) {
        printf("Error %u: %s",mysql_errno(conn), mysql_error(conn));
        exit(1);
    }

    mysql_close(conn);
    return 0;
}

Этот код компилируется, но когда я его запускаю, он завершается после оператора mysql_query().

Возвращается следующая ошибка:

Error 2006: MySQL server has gone away

Я использовал Google для поиска ответа и оказался здесь:

http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

Ответы [ 3 ]

6 голосов
/ 27 ноября 2013

/ * Простая программа на C, которая подключается к серверу базы данных MySQL * /

 #include <mysql.h>
 #include <stdio.h>
 main() {
     MYSQL *conn;
     MYSQL_RES *res;
     MYSQL_ROW row;
     char *server = "localhost";
     char *user = "root";
     char *password = "PASSWORD"; /* set me first */
     char *database = "mysql";
     conn = mysql_init(NULL);
     /* Connect to database */
     if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }

    /* send SQL query */
    if (mysql_query(conn, "show tables")) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    res = mysql_use_result(conn);

    /* output table name */
    printf("MySQL Tables in mysql database:\n");
    while ((row = mysql_fetch_row(res)) != NULL)
        printf("%s \n", row[0]);

    /* close connection */
    mysql_free_result(res);
    mysql_close(conn);
}
0 голосов
/ 11 августа 2010

Возвращаемые значения Дескриптор соединения MYSQL *, если соединение было успешным, NULL, если соединение было> неудачным.Для успешного подключения возвращаемое значение совпадает со значением> первого параметра.

http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html

ваше соединение не устанавливается

0 голосов
/ 11 августа 2010

Ваше соединение не установлено - ваш тест должен быть:

if (mysql_real_connect(...) == NULL) {
  printf("...");
  exit(1);
}

mysql_real_connect возвращает NULL в случае сбоя или дескриптор соединения в случае успеха.

- Дейв

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...