Проблем с MySQL C API

6 отговора 0 прегледа
#1

Проблем с MySQL C API

Здравейте,
От вчера следобед се оитвам са си вържа софтуерчето, което пиша с MySQL. По принцип тръгнах да го пиша на Free Psacal, но като не успях с връзката ща н еща минах на C. И там проблемът е същия, защото според написаното в първия случай имаме просто паскалски интерфейс към MySQL C API. PHP работи, ама ще трябва да го чакам с дни, а в момента си тествам алгоритмите и не си познавам добре (съдържателно) данните ...

След
Link:=mysql_init(nil);
mysql_real_connect(Link,'localhost','root','','database',3306,'/tmp/mysql.sock',0);
...
if (Link=nil) then writeln('Връзката пропадна (1)',mysql_error(Link));
...
if (mysql_real_query(Link,sql,L)<>0) then writeln('Не мога да изпълня заявката', mysql_error(Link));

не мога да продължа. При изпълнение на mysql_real_query получавам грешка "MySQL server has gone away"

Цяла нощ
* прескачах от единия език на другия,
* Рових модулите на Free Pascal (онлайн документацията освен свръх минималистична, е грешна) и документацията на апито
* гледах си стар код на C, който е работил на друга машина не откривам къде е проблема
Гугъл ми намери, че подобен бъг е репотван преди две-три години.
* 999/1000 в типовете на параметрите няма грешка

Ще съм задължен, ако някой се е сблъсквал с проблема и ми каже има ли решение.

Ubuntu 8.10
Free Pascal 2.2.0
gcc 4.3.1
libmysqlclient 5.0.67
mysql 5.0.67
PHP 5.2.6 (дето по принцип работи ама ...)

Мрънканици
Отговор
в отговор на ДъpвeнФилocoф #2

Re: Проблем с MySQL C API

int ConnectToMySQL(){

char S[256];
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
return 1;
}
snprintf(S, sizeof(S), "delete from Temp_Split where Org_File='%s'",OrgFile);
mysql_query(conn, S);
return 0;
}

Горното парче код работи без проблем.
файла е компилиран с:
gcc split_wav.c -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto -o split_wav

А параметрите за mysql съм ги взел със
mysql_config --libs


Bеer? Mоre?
Плацебото
Отговор
в отговор на ДъpвeнФилocoф #3

Re: Проблем с MySQL C API

това помогна ли ти:
[линк]

щото инак, ей тва бачка:

#include <stdio.h>
#include <string.h>
#include <mysql/mysql.h>

int main (int argc, char **argv)
{
MYSQL *mysql;
MYSQL_RES *rez;
MYSQL_ROW row;

unsigned int n;
char q[] = "SELECT n, m, (n + m) AS nm FROM ttt ORDER BY n LIMIT 10";

if ( ! (mysql = mysql_init(NULL)) )
{
fprintf(stderr, "shit 1\n");
return 1;
}

if ( ! mysql_real_connect(mysql, "localhost", "uzer", "parola", "", 0, NULL, 0) )
{
fprintf(stderr, "shit 2, error: %s\n", mysql_error(mysql));
mysql_close(mysql);
return 2;
}

if ( mysql_select_db(mysql, "test") )
{
fprintf(stderr, "shit 3, error: %s\n", mysql_error(mysql));
mysql_close(mysql);
return 3;
}

if ( mysql_real_query(mysql, q, strlen(q)) )
{
fprintf(stderr, "shit 4, error: %s\n", mysql_error(mysql));
mysql_close(mysql);
return 4;
}

if ( ! (rez = mysql_store_result(mysql)) )
{
fprintf(stderr, "shit 5, error: %s\n", mysql_error(mysql));
mysql_close(mysql);
return 5;
}

n = mysql_num_fields(rez);

while ( (row = mysql_fetch_row(rez)) )
{
int i;
for (i = 0; i < n; i++)
{
printf("%s ", row[i] ? row[i] : "NULL");
}
printf("\n");
}

mysql_free_result(rez);
mysql_close(mysql);

fprintf(stdout, "bla\n");
return 0;
}


hell storms, rush over the earth
bestial invasioooooooooooon
Отговор
в отговор на bira_more #4

Re: Проблем с MySQL C API

Прочетох още снощи, но след 40 часа безсъние то оставих за днес.

Сработи. Проблемът беше в параметрите.

Мерси.

Мрънканици
Отговор
в отговор на ЛУД ПPЪЧ #5

Re: Проблем с MySQL C API

Не вмествам в никой от вариантите от линка.

Оправих го с 0,NULL,0

Мрънканици
Отговор
в отговор на ДъpвeнФилocoф #6

Re: Проблем с MySQL C API

честито!

hell storms, rush over the earth
bestial invasioooooooooooon
Отговор
в отговор на ДъpвeнФилocoф #7

Re: Проблем с MySQL C API

Радвам се.
А и така свърших още едно нещо - Франки все ме врънкаше за мои кодове - та те сега може пак да гледа.

Bеer? Mоre?
Плацебото
Отговор