Problem using the C-API for MySQL Program breakdown after about 1Mio SQL-statements

2003-01-15 Thread Daniel Wetzler
Hallo,

I apologize for my bad english.
Im desperate about the followwing problem :

I'm using the MySQL C-API for accesssing a database with about 1.2 Mio
SQL-Statemants.
Therefor I make a connect to the database and after that a loop
starts a Subprogram about 1.2 Mio times in which a SQL-statement is sent
to the database. My problem is that the program breaks down after about
1 Mio iterations with a Bus error and Segmentation fault.
If I analyse the core dump with a debugger I get the following statements :
The program breaks down at line :

if (mysql_query(mysql2, abfrage)) {
	printf (Fehler bei der Abfrage ! Fehler : %s \n %s \n, 
mysql_error(mysql2), abfrage);
	exit(1);



Program terminated with signal 10, Bus Error.
#0  0xff35a90c in vio_is_blocking () from 
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#1  0xff35a4e0 in net_clear () from 
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#2  0xff356abc in simple_command () from 
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#3  0xff3594e8 in mysql_real_query () from 
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#4  0x11728 in read_coor (i=1065778) at nclu-datenbank.c:279
(gdb) up


I checked the SQL statement which is sent at that time an it is ok
and leads to suitable result.



Does any one have an idea why my program breaks down ?


Greetings,


Daniel








P.S :


Here is my code for accessing the database :


(some code. )

 mysql2 = mysql_init(NULL);

if (mysql2 == NULL){
  printf (mysql_init() fehlgeschlagen (kein Speicher ?)\n);
  exit (1);
}

if (mysql_real_connect( mysql2, def_host_name, def_user_name, 
def_password, def_db_name, 0, NULL, 0) == NULL){
  printf(Datenbankverbindung hat nicht geklappt.\n);
}
printf (Datenbankverbindung 1 ok\n);


while(ergebnisarray[zaehler] != NULL) {
  /*printf (zahl = %i\n, ergebnisarray[zaehler]);*/

  j=read_coor(ergebnisarray[zaehler]);
	/* This is my fuction which sends the SQL-statements accessed 1.2 Mio 
times */
  zaehler++;

}

mysql_close(mysql2);



(some code)





In my function I access the database with the following lines :




(some code)..


  for (seglaengenzaehler = 1; seglaengenzaehler = seglength; 
seglaengenzaehler ++) {

sprintf (abfrage, select xkoor, ykoor, zkoor, id from %iloop inner 
join pdbmolekuel on m%i=molekuelnr inner join pdbatom on molekuelnr = 
molekuelzuordnung where loopnummer = %i, seglength, seglaengenzaehler, i);


  if (mysql_query(mysql2, abfrage)) {
	printf (Fehler bei der Abfrage ! Fehler : %s \n %s \n, 
mysql_error(mysql2), abfrage);
	exit(1);
  }
  else {
	ergebnis = mysql_use_result(mysql2);
  }
}

if (ergebnis == NULL) {
  printf (Fehler beim show tables !\n Fehler : %s , 
mysql_error(mysql2));
}
else {
  /*printf (Alles in Ordnung !\n);*/

  while((myzeile = mysql_fetch_row(ergebnis)))
	{
	
	  if ( strcmp(myzeile[3],CA)==0 || strcmp(myzeile[3],N) == 0 || 
strcmp(myzeile[3],C) == 0 ||
	   strcmp(myzeile[3],O) == 0)
	{
		 // Es werden nur die Atome CA, N, C und O beachtet
		
		 coor[j] = atof(myzeile[0]);
		 coor[j+1] = atof(myzeile[1]);
		 coor[j+2] = atof(myzeile[2]);
		 j += 3;

	}
	}
  mysql_free_result (ergebnis);
}
resno = j/12;
  }



(some code)






-
Before posting, please check:
  http://www.mysql.com/manual.php   (the manual)
  http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php



Re: Problem using the C-API for MySQL Program breakdown after about1 Mio SQL-statements

2003-01-15 Thread Daniel Wetzler
Thanks for your advice.
I tried it with the higher value (3M) but the program broke down
like before.
I increased the other buffer values too after that and am
testing now if this helps.

Greetings,

Daniel




Gelu Gogancea wrote:

Hi,
Maybe it's a good ideea to increase the value of max_allowed_packet(from
my.cnf configuration file) to 2M.By default is 1MB.

Regards,

Gelu
_
G.NET SOFTWARE COMPANY

Permanent e-mail address : [EMAIL PROTECTED]
  [EMAIL PROTECTED]
- Original Message -
From: Daniel Wetzler [EMAIL PROTECTED]
To: MySQL Mailing Liste [EMAIL PROTECTED]
Sent: Wednesday, January 15, 2003 11:54 AM
Subject: Problem using the C-API for MySQL Program breakdown after about 1
Mio SQL-statements




Hallo,

I apologize for my bad english.
Im desperate about the followwing problem :

I'm using the MySQL C-API for accesssing a database with about 1.2 Mio
SQL-Statemants.
Therefor I make a connect to the database and after that a loop
starts a Subprogram about 1.2 Mio times in which a SQL-statement is sent
to the database. My problem is that the program breaks down after about
1 Mio iterations with a Bus error and Segmentation fault.
If I analyse the core dump with a debugger I get the following statements


:


The program breaks down at line :

if (mysql_query(mysql2, abfrage)) {
printf (Fehler bei der Abfrage ! Fehler : %s \n %s \n,
mysql_error(mysql2), abfrage);
exit(1);



Program terminated with signal 10, Bus Error.
#0  0xff35a90c in vio_is_blocking () from
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#1  0xff35a4e0 in net_clear () from
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#2  0xff356abc in simple_command () from
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#3  0xff3594e8 in mysql_real_query () from
/usr/local/mysql/lib/mysql/libmysqlclient.so.10
(gdb) up
#4  0x11728 in read_coor (i=1065778) at nclu-datenbank.c:279
(gdb) up


I checked the SQL statement which is sent at that time an it is ok
and leads to suitable result.



Does any one have an idea why my program breaks down ?


Greetings,


Daniel








P.S :


Here is my code for accessing the database :


(some code. )

 mysql2 = mysql_init(NULL);

if (mysql2 == NULL){
  printf (mysql_init() fehlgeschlagen (kein Speicher ?)\n);
  exit (1);
}

if (mysql_real_connect( mysql2, def_host_name, def_user_name,
def_password, def_db_name, 0, NULL, 0) == NULL){
  printf(Datenbankverbindung hat nicht geklappt.\n);
}
printf (Datenbankverbindung 1 ok\n);


while(ergebnisarray[zaehler] != NULL) {
  /*printf (zahl = %i\n, ergebnisarray[zaehler]);*/

  j=read_coor(ergebnisarray[zaehler]);
/* This is my fuction which sends the SQL-statements accessed 1.2 Mio
times */
  zaehler++;

}

mysql_close(mysql2);



(some code)





In my function I access the database with the following lines :




(some code)..


  for (seglaengenzaehler = 1; seglaengenzaehler = seglength;
seglaengenzaehler ++) {

sprintf (abfrage, select xkoor, ykoor, zkoor, id from %iloop inner
join pdbmolekuel on m%i=molekuelnr inner join pdbatom on molekuelnr =
molekuelzuordnung where loopnummer = %i, seglength, seglaengenzaehler,


i);



  if (mysql_query(mysql2, abfrage)) {
printf (Fehler bei der Abfrage ! Fehler : %s \n %s \n,
mysql_error(mysql2), abfrage);
exit(1);
  }
  else {
ergebnis = mysql_use_result(mysql2);
  }
}

if (ergebnis == NULL) {
  printf (Fehler beim show tables !\n Fehler : %s ,
mysql_error(mysql2));
}
else {
  /*printf (Alles in Ordnung !\n);*/

  while((myzeile = mysql_fetch_row(ergebnis)))
{

 if ( strcmp(myzeile[3],CA)==0 || strcmp(myzeile[3],N) == 0 ||
strcmp(myzeile[3],C) == 0 ||
  strcmp(myzeile[3],O) == 0)
   {
// Es werden nur die Atome CA, N, C und O beachtet

coor[j] = atof(myzeile[0]);
coor[j+1] = atof(myzeile[1]);
coor[j+2] = atof(myzeile[2]);
j += 3;

   }
}
  mysql_free_result (ergebnis);
}
resno = j/12;
  }



(some code)






-
Before posting, please check:
  http://www.mysql.com/manual.php   (the manual)
  http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php






-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php







-
Before