upgrading caused the following error message:
user warning: Unknown column 'e.has_time' in 'field list' query: SELECT DISTINCT(n.nid), n.uid, n.title, n.type, n.status, n.changed, e.event_start, e.event_end, e.timezone, e.has_time, e.has_end_date, TIMEDIFF(e.event_start, '2007-08-03 14:59:43') AS time_left FROM node n INNER JOIN event e ON n.nid = e.nid WHERE n.status = 1 AND (((e.event_start != e.event_end) AND ('2007-08-03 14:59:43' >= e.event_start AND '2007-08-03 14:59:43' < e.event_end)) OR ((e.event_start = e.event_end) AND ('2007-08-03 14:59:43' <= e.event_start + INTERVAL 7200 SECOND)) OR e.event_start >= '2007-08-03 14:59:43') ORDER BY event_start LIMIT 0, 3 in D:\apache2triad\htdocs\horstead0\includes\database.mysql.inc on line 172.

Comments

michelle’s picture

My guess is that's the new boolean field to replace using 00:00-23:59 to determine all day events. Did you run update.php after upgrading the code? Looks like your database didn't get updated.

Michelle

chaos21in’s picture

Hi,
I also got the same error message after yesterday upgrade, evenif i run update.php after upgradation. I guess database upgrade part is not updated in event.install file.

--rafi

artatac’s picture

yes I did run update.php

stenjo’s picture

This happened to me as well. Did the update.php but error still persists and no events show up any more.
What would be a good intermediate solution to this? Add the column manually to the table?

stenjo’s picture

Status: Active » Needs review

Sorted!
Altered the event table, adding two colums: has_time and has_end_date as tinyints. I have searched through the event.install file and there is no code there inserting these columns into the table.

Suggest new code in new event_update_7():

/**
 * Add has_time and has_end_date
 */
function event_update_7() {
  $ret = array();
  switch ($GLOBALS['db_type']) {
    case 'pgsql':
      db_add_column($ret, 'event', 'has_time', 'integer', array('default' => 0, 'not null' => TRUE));
      db_add_column($ret, 'event', 'has_end_date', 'integer', array('default' => 0, 'not null' => TRUE));
      break;
    case 'mysql':
    case 'mysqli':
      $ret[] = update_sql("ALTER TABLE {event} ADD has_time tinyint NOT NULL default 0");
      $ret[] = update_sql("ALTER TABLE {event} ADD has_end_date tinyint NOT NULL default 0");
      break;
  }
  return $ret;
}

/Sten

hongpong’s picture

yeah i got the same thing when i upgraded from 1.x-dev to 2.x-dev, plus another (my paths deleted):

    * user warning: Unknown column 'e.has_time' in 'field list' query: SELECT n.nid, n.uid, n.title, n.type, n.status, n.changed, e.event_start, e.event_end, e.timezone, e.has_time, e.has_end_date, TIMEDIFF(e.event_start, '2007-08-06 16:26:03') AS time_left FROM node n INNER JOIN event e ON n.nid = e.nid WHERE n.status = 1 AND (((e.event_start != e.event_end) AND ('2007-08-06 16:26:03' >= e.event_start AND '2007-08-06 16:26:03' < e.event_end)) OR ((e.event_start = e.event_end) AND ('2007-08-06 16:26:03' <= e.event_start + INTERVAL 7200 SECOND)) OR e.event_start >= '2007-08-06 16:26:03') ORDER BY event_start LIMIT 0, 6 in /((mypath))/includes/database.mysql.inc on line 172.
    * user warning: Unknown column 'e.has_time' in 'field list' query: SELECT n.nid, n.uid, n.title, n.type, e.event_start AS event_start_orig, e.event_end AS event_end_orig, e.timezone, e.has_time, e.has_end_date, tz.offset AS offset, tz.offset_dst AS offset_dst, tz.dst_region, tz.is_dst, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_start_utc, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_end_utc, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL 0 SECOND AS event_start_user, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL 0 SECOND AS event_end_user, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL -18000 SECOND AS event_start_site, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL -18000 SECOND AS event_end_site, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL -18000 SECOND AS event_start, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL -18000 SECOND AS event_end, tz.name as timezone_name FROM node n INNER JOIN event e ON n.nid = e.nid INNER JOIN event_timezones tz ON tz.timezone = e.timezone WHERE n.status = 1 AND ((e.event_start >= '2007-07-31 00:00:00' AND e.event_start <= '2007-09-01 23:59:59') OR (e.event_end >= '2007-07-31 00:00:00' AND e.event_end <= '2007-09-01 23:59:59') OR (e.event_start <= '2007-07-31 00:00:00' AND e.event_end >= '2007-09-01 23:59:59')) HAVING (event_start >= '2007-08-01 00:00:00' AND event_start <= '2007-08-31 23:59:59') OR (event_end >= '2007-08-01 00:00:00' AND event_end <= '2007-08-31 23:59:59') OR (event_start <= '2007-08-01 00:00:00' AND event_end >= '2007-08-31 23:59:59') ORDER BY event_start ASC in /((mypath))/includes/database.mysql.inc on line 172.

I will try the patch and report if it works. thanks stenjo

hongpong’s picture

instead i ran these SQL commands:

ALTER TABLE event ADD has_time tinyint NOT NULL default 0;
ALTER TABLE event ADD has_end_date tinyint NOT NULL default 0;

and that has indeed solved the problem. bravo!

lias’s picture

Will this be added to the next version?

gerhard killesreiter’s picture

Status: Needs review » Fixed

this is in CVS as of a fw days ago.

Anonymous’s picture

Status: Fixed » Closed (fixed)