dirkil2
asked on
drupal user warning: You have an error in your SQL syntax
HI, I've tried to install the German Drupal on a fresh Windows Server 2008 Web Edition and get the following error message:
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY fit DESC LIMIT 0, 1' at line 1 query: SELECT * FROM menu_router WHERE path IN () ORDER BY fit DESC LIMIT 0, 1 in D:\websites2\drupal\includ es\menu.in c on line 315.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY fit DESC LIMIT 0, 1' at line 1 query: SELECT * FROM menu_router WHERE path IN () ORDER BY fit DESC LIMIT 0, 1 in D:\websites2\drupal\includ es\menu.in c on line 315.
This is obviously not working because there is no content for the IN(). I had a look at the source code and found that the variable $placeholders must be empty.
I have cookies enabled so I reckon it must have something to do with my PHP installation. I also tried setting "session.save_handler = user" but it made no difference.
When I set it to "session.save_handler = files" I can see a session file being created in the file system on the server so this works fine.
I am aware of http://drupal.org/node/247360 but nothing from that post seems to work for me. Any help is very much appreciated!
Regards,
Dirk.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY fit DESC LIMIT 0, 1' at line 1 query: SELECT * FROM menu_router WHERE path IN () ORDER BY fit DESC LIMIT 0, 1 in D:\websites2\drupal\includ
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY fit DESC LIMIT 0, 1' at line 1 query: SELECT * FROM menu_router WHERE path IN () ORDER BY fit DESC LIMIT 0, 1 in D:\websites2\drupal\includ
This is obviously not working because there is no content for the IN(). I had a look at the source code and found that the variable $placeholders must be empty.
I have cookies enabled so I reckon it must have something to do with my PHP installation. I also tried setting "session.save_handler = user" but it made no difference.
When I set it to "session.save_handler = files" I can see a session file being created in the file system on the server so this works fine.
I am aware of http://drupal.org/node/247360 but nothing from that post seems to work for me. Any help is very much appreciated!
Regards,
Dirk.
I read the thread on drupal.org and the only thing (besides a wipe-clean reinstall) that jumped out at me was the $cookie_domain value. You might be running on localhost?
ASKER
Yes i am Running on localhost
ASKER
What do you suggest as a solution concerning the $cookie_domain value?
Some of the comments seemed to suggest that if you used an IP address instead of localhost you might get past the line 315 issue. Of course, some of the other comments seem to indicate that after such a change, a complete re-install of the data base and the code was required.
My guess is that Drupal may be doing setcookie() incorrectly. The code snippet is an excerpt from a teaching script that shows the correct way to set a cross-subdomain cookie. If Drupal ignored the count it is easy to see how a cookie could get bollixed when the domain was 'localhost' with no dots.
My guess is that Drupal may be doing setcookie() incorrectly. The code snippet is an excerpt from a teaching script that shows the correct way to set a cross-subdomain cookie. If Drupal ignored the count it is easy to see how a cookie could get bollixed when the domain was 'localhost' with no dots.
// MAKE THE COOKIE AVAILABLE TO ALL SUBDOMAINS - DOMAIN NAME STARTS WITH DOT AND OMITS WWW (OR OTHER SUBDOMAINS).
$x = explode('.', strtolower($_SERVER["HTTP_HOST"]));
$y = count($x);
if ($y == 1) // MAYBE 'localhost'?
{
$cookie_domain = $x[0];
}
else // SOMETHING LIKE 'www2.atf70.whitehouse.gov'?
{
// USE THE LAST TWO POSITIONS TO MAKE THE HOST DOMAIN
$cookie_domain = '.' . $x[$y-2] . '.' . $x[$y-1];
}
This link is fairly recent and might be helpful, too.
http://drupal.org/node/350271
http://drupal.org/node/350271
ASKER
I tried a complete re-install with 127.0.0.1 instead of localhost but I got the same error message.
I also debugged into the code on line 315 and found that the array $placeholders is empty in either case (127.0.0.1 and localhost).
I am not sure where exactly $placeholders is supposed to get its values from. If I knew that I could debug further.
I also debugged into the code on line 315 and found that the array $placeholders is empty in either case (127.0.0.1 and localhost).
I am not sure where exactly $placeholders is supposed to get its values from. If I knew that I could debug further.
ASKER
Unfortunately, the links you mentioned are not helpful to me because I am running on a 64bit environment with IIS instead of apache. I also want the latest PHP version because of security issues.
Do you have a text editor with a code scanner or "find in files" ability? You might be able to look up $placeholders that way.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Found a workaround (see my last post.)