Received the following errors while trying to complete the Drupal install wizard.
Note that the final error indicating that there's no watchdog table would appear to be correct. I opened the SQLite database in SQuirreL and there is no table with that name in the database.

What's wrong and how do I fix it? So for such a nonspecific explanation and question but I'm pretty new to PHP and Drupal.

Warning: Illegal string offset 'field' in UpdateQuery_sqlite->removeFieldsInCondition() (line 75 of C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\drupal\includes\database\sqlite\query.inc).
Warning: Illegal string offset 'field' in UpdateQuery_sqlite->removeFieldsInCondition() (line 79 of C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\drupal\includes\database\sqlite\query.inc).
These two errors above repeated about a dozen times

Then got error below:
SQLSTATE[HY000]: General error: 1 no such table: drupal_.watchdog

Comments

tommalia@tandtdatasolutions.com’s picture

The problem in removeFieldsInCondition() in the query.inc file appears to be the same problem or at least the same patch works as the one posted for a problem with the update.php:

Change:

  protected function removeFieldsInCondition(&$fields, QueryConditionInterface $condition) {
    foreach ($condition->conditions() as $child_condition) {
        if ($child_condition['field'] instanceof QueryConditionInterface) {
          $this->removeFieldsInCondition($fields, $child_condition['field']);
        }
        else {
          unset($fields[$child_condition['field']]);
        }
    }
  }

to

  protected function removeFieldsInCondition(&$fields, QueryConditionInterface $condition) {
    foreach ($condition->conditions() as $child_condition) {
      if (isset($child_condition['field'])) {
        if ($child_condition['field'] instanceof QueryConditionInterface) {
          $this->removeFieldsInCondition($fields, $child_condition['field']);
        }
        else {
          unset($fields[$child_condition['field']]);
        }
      }
    }
  }
stefan_seefeld’s picture

I just ran into the same issue, and tried out the above patch.

Unfortunately this doesn't fix all of the problems. Instead of the original warning I now get:

Warning: Illegal offset type in unset in UpdateQuery_sqlite->removeFieldsInCondition() (line 88 of /usr/share/drupal7/includes/database/sqlite/query.inc).

and the final error still remains:

SQLSTATE[HY000]: General error: 1 no such table: watchdog

ckhung’s picture

Hi stefan and all,

This may be obvious to drupal veterans but I just want to share it with other newbies like me who land here with a google search of "drupal no such table watchdog" . I am using drush --site-install ... on Fedora 17 to install drupal 7 and bumped into similar error messages. What I asked for on the drush command line is mysql, not sqlite (--db-url=mysql://root:'pwd'@localhost/drupal7) so this message was confusing to me in the first place. Also , the patch does not apply in my case. Then I took the browser approach to installation, and at the 4th step "Set up database" saw the message "Your PHP configuration only supports a single database type, so it has been automatically selected" (which is sqlite).

At this point I aborted the browser installation, did yum install php-mysql, restarted the drush installation, and succeeded.

lathan’s picture

This is a drupal core bug please help the patch efforts here http://drupal.org/node/1784548