I'm not a DBA and don't even play one on TV so perhaps this isn't a strange DB message at all, however:

Unknown column 'boost_crawler.url' in 'field list' query: SELECT boost_crawler.url FROM foo_boost_cache INNER JOIN foo_boost_crawler ON boost_cache.url=boost_crawler.url WHERE boost_cache.expire = 0 in /drupal-home/sites/all/modules/boost/boost.module on line 2665.

This is now happening after nearly ever cron run (almost, each run will do 750 URLs but there are a tad over 1000 in boost_crawler), but Boost successfully crawled the whole site before this started happening. Now each cron run sees the same set of URLs being repeatedly checked followed by the above error. Of course I did check and both foo_boost_cache and foo_boost_crawler tables contain a url field. If I'm interpreting the logging correctly, then my site's cache is already out of date (from a crawling perspective, the normal caching upon access works fine).

Not really sure what other information is relevant, I can say with certainty that there are many more than 1011 URLs to crawl on this site, there are just shy of 60,000 records in boost_cache, but I'm not really sure what is expected in boost_crawler. Oh and I did apply the seconds conversion patch, this problem was happening both before and after the patch was applied (but without the patch boost stopped working long before the site was crawled).

I'm at a loss here ... I can only assume the error message is a red herring but I know not where to look next.

CommentFileSizeAuthor
#4 boost-586700.patch943 bytesmikeytown2

Comments

mikeytown2’s picture

Priority: Critical » Normal

It's trying to get data from the foo_boost_cache table... that should be the boost_cache table. Did you edit the module so it uses a different table? This is what the SQL query should look like with an unmodified module.

SELECT boost_crawler.url FROM boost_cache INNER JOIN boost_crawler ON boost_cache.url=boost_crawler.url WHERE boost_cache.expire = 0

Here's yours

SELECT boost_crawler.url FROM foo_boost_cache INNER JOIN foo_boost_crawler ON boost_cache.url=boost_crawler.url WHERE boost_cache.expire = 0

Here's how it should look with your modded tables

SELECT foo_boost_crawler.url FROM foo_boost_cache INNER JOIN foo_boost_crawler ON foo_boost_cache.url=foo_boost_crawler.url WHERE foo_boost_cache.expire = 0

It's still working because this is part of the boost_crawler_verify() function. It runs after the first crawl, and hits the URL again if it didn't get cached the first time.

Dave Kinchlea’s picture

I use prefix "foo_" on all database tables -- you get that for free with drupal .... it isn't actually foo_, BTW, so the foo is put in by Drupal ... I think it substitutes when {} is used .... In any case, I didn't change the table names except via normal Drupal options.

from settings.php:
$db_prefix = 'foo_';

So, while I inherited this option I don't think it is all that unusual is it?

Dave

mikeytown2’s picture

It allows you to run Drupal within a database that isn't just for that install. Looking at core, I need to rewite the SQL so i use a table alias in the query.
http://api.drupal.org/api/function/forum_get_topics/6

SELECT bcrawler.url FROM {boost_cache} bcache INNER JOIN {boost_crawler} bcrawler ON bcache .url=bcrawler.url WHERE bcache .expire = 0
mikeytown2’s picture

Status: Active » Needs review
StatusFileSize
new943 bytes
Dave Kinchlea’s picture

Status: Needs review » Reviewed & tested by the community

I'm not sure what happened with my reply ... perhaps I was just up too late :-)
Your patch worked perfectly, thanks again you are two for two (I was hit by the seconds/microseconds bug as well and that patch fixed two bugs I didn't have to submit).

I'm unclear on the protocol for changing status but given the link to the handbook, my review and testing of the code suggests that changing it here is reasonable.

mikeytown2’s picture

Status: Reviewed & tested by the community » Fixed

committed, thanks for testing.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.