Проблем с MySQL C API
6 отговора
0 прегледа
Проблем с 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 (дето по принцип работи ама ...)
Мрънканици
От вчера следобед се оитвам са си вържа софтуерчето, което пиша с 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 (дето по принцип работи ама ...)
Мрънканици
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?
Плацебото
Re: Проблем с MySQL C API
това помогна ли ти:
[линк]
щото инак, ей тва бачка:
hell storms, rush over the earth
bestial invasioooooooooooon
[линк]
щото инак, ей тва бачка:
#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
Re: Проблем с MySQL C API
Прочетох още снощи, но след 40 часа безсъние то оставих за днес.
Сработи. Проблемът беше в параметрите.
Мерси.
Мрънканици
Сработи. Проблемът беше в параметрите.
Мерси.
Мрънканици
Re: Проблем с MySQL C API
Не вмествам в никой от вариантите от линка.
Оправих го с 0,NULL,0
Мрънканици
Оправих го с 0,NULL,0
Мрънканици
Re: Проблем с MySQL C API
честито!
hell storms, rush over the earth
bestial invasioooooooooooon
hell storms, rush over the earth
bestial invasioooooooooooon
Re: Проблем с MySQL C API
Радвам се.
А и така свърших още едно нещо - Франки все ме врънкаше за мои кодове - та те сега може пак да гледа.


Bеer? Mоre?
Плацебото
А и така свърших още едно нещо - Франки все ме врънкаше за мои кодове - та те сега може пак да гледа.
Bеer? Mоre?
Плацебото