Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 293
  • Last Modified:

Intermittent failure of mysql_fetch_assoc to return large result from select query

I have a database that stores reports as html in a longtext field, these can be a reasonable size up to say 6Mb.  I retrieve one at a time them using a reference number and a report type number as criteria and a limit 0,1.  The query works intermittently though sometimes it returns the query other times I get a blank record.  The query is correct as it will work sometimes, and it works in phpmyadmin.  The included code is the general form of the mysql php interface in the software.
I don't get a mysql error or a php error, it simply sometimes gives a blank result when it shouldn't.
I hope someone can help asI have had no luck so far.
mysql_select_db($this->database, $this->databaseConnection);
		$selectSQL = "SELECT " . $this->SQLSelect . " FROM " . $this->SQLFrom;
		if ($this->SQLWhere != ""){ $selectSQL .= " WHERE " . $this->SQLWhere; };
		if ($this->SQLOrder != ""){ $selectSQL .= " ORDER BY " . $this->SQLOrder; };
		
 
		if ($this->SQLLimit != ""){ $selectSQL .= " LIMIT " . $this->SQLLimit; };
		$selectSQL .= ";";
		
		$data = mysql_query($selectSQL, $this->databaseConnection);
		$this->selectedData_totalRows = mysql_num_rows($data);
		$_SESSION['current_selectedData_totalRows'] = $this->selectedData_totalRows;
		$_SESSION['currentSelectSQL'] = $selectSQL;
	
		$i = 0;
		while ($row_data = mysql_fetch_assoc($data)) {
			$this->selectedData[$i] = $row_data;
			$i++;
		} 
		mysql_free_result($data);
		
		if ($returnData == -1){
			$this->setSelectedDataToSession();
		} else {
			return $this->selectedData;	
		}

Open in new window

0
photondesign
Asked:
photondesign
  • 3
  • 3
1 Solution
 
Ray PaseurCommented:
Given the code above you have no way of knowing whether the MySQL query has run correctly or not!

Try using something like the code snippet...

Best regards, ~Ray
$data = mysql_query($selectSQL, $this->databaseConnection);
if (!$data)
{
   $err = mysql_errno() . ' ' . mysql_error();
   echo "<br/>QUERY FAIL $selectSQL <br/>\n";
   die ($err);
}

Open in new window

0
 
photondesignAuthor Commented:
I forgot to mention.  I have been running the code with a mysql_error() inserted into the php error log, but it was not producing any errors.  I have also tried high_priority and sql_no_cache on the select statement, although it is an innodb table so not sure the high_priority has any effect anyway.
0
 
Ray PaseurCommented:
OK, add something like the mysql_error() checker to the above code.  Any clues as to what determines the intermittent nature of the error?  Particular time of day or any other factor that can help generate a repeatable error?
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
photondesignAuthor Commented:
What I meant by my last comment was I have tested it with MySQL error written to the log.  No errors are written even when the empty result is returned.  It will be a case of works then two minutes later it doesn't return anything.  No other users are accessing the row, no other users are even accessing the table.  It is not at any time of the day in particular.  It can be when no other users are even connected to the server or database. It can work then not work and then work again in the space of five minutes.  It really is frustrating.
0
 
photondesignAuthor Commented:
I have finally managed to fix the issue and it turned out to be MySQL rather than the PHP code or query itself.  I changed the transaction isolation type READ-COMMITTED in the my.ini (my.cnf for linux,etc) using the line transaction-isolation = READ-COMMITTED in the [mysqld] section.  The queries now all return a result every time.

0
 
Ray PaseurCommented:
Excellent - glad you were able to find a solution.  Best regards, ~Ray
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now