Firstly, have to say it's a great product.
However, when a slight change is made (Sometimes), it can be infuriating.
Example, I added a new field to tickets - as we need to know the Venue they are calling from
Should be easy enough, however, saving and going back to the main screen - removes all the tickets from the panel
(There should be about 15 or so tickets open)
About the system;
The error in email:
DB Error #1054
[SELECT A1.number
AS number
, A1.ticket_id
AS ticket_id
, A1.source
AS source
, A1.lastupdate
AS lastupdate
, B4.subject
AS cdata__subject
, A1.isoverdue
AS isoverdue
, B6.name
AS user__name
, B4.priority
AS cdata__priority
, B7.firstname
AS staff__firstname
, B7.lastname
AS staff__lastname
, B8.name
AS team__name
, A1.team_id
AS team_id
, A1.isanswered
= '0' AS 2GkBZxz
, (SELECT COUNT(R0.id
) AS count
FROM ost_thread
Q7 JOIN ost_ticket
Q8 ON (Q7.object_type
= 'T' AND Q7.object_id
= Q8.ticket_id
) LEFT JOIN ost_thread_entry
R0 ON (Q7.id
= R0.thread_id
) WHERE Q8.ticket_id
= A1.ticket_id
AND NOT R0.flags
& 4 != 0) AS _thread_count, (SELECT COUNT(R1.id
) AS count
FROM ost_thread
Q7 JOIN ost_ticket
Q8 ON (Q7.object_type
= 'T' AND Q7.object_id
= Q8.ticket_id
) LEFT JOIN ost_thread_entry
R0 ON (Q7.id
= R0.thread_id
) LEFT JOIN ost_attachment
R1 ON (R1.type
= 'H' AND R0.id
= R1.object_id
) WHERE Q8.ticket_id
= A1.ticket_id
AND R1.inline
= 0) AS _att_count, C0.expire
> NOW() AND NOT C0.staff_id
= 1 AS _locked
, (SELECT COUNT(R0.id
) AS count
FROM ost_thread
Q7 JOIN ost_ticket
Q8 ON (Q7.object_type
= 'T' AND Q7.object_id
= Q8.ticket_id
) LEFT JOIN ost_thread_collaborator
R0 ON (Q7.id
= R0.thread_id
) WHERE Q8.ticket_id
= A1.ticket_id
) AS _collabs, COALESCE(B7.firstname
, B7.lastname
, B8.name
, 'zzz') AS assignee
FROM ost_ticket
A1 JOIN ost_ticket_status
A2 ON (A1.status_id
= A2.id
) LEFT JOIN ost_thread
A3 ON (A3.object_type
= 'T' AND A1.ticket_id
= A3.object_id
) LEFT JOIN ost_thread_referral
A4 ON (A3.id
= A4.thread_id
) LEFT JOIN ost_staff
A5 ON (A4.object_type
= 'S' AND A4.object_id
= A5.staff_id
) LEFT JOIN ost_thread
A6 ON (A1.ticket_id
= A6.object_id
AND A6.object_type
= 'C') LEFT JOIN ost_thread_referral
A7 ON (A6.id
= A7.thread_id
) LEFT JOIN ost_staff
A8 ON (A7.object_type
= 'S' AND A7.object_id
= A8.staff_id
) LEFT JOIN ost_team
B0 ON (A4.object_type
= 'E' AND A4.object_id
= B0.team_id
) LEFT JOIN ost_team
B1 ON (A7.object_type
= 'E' AND A7.object_id
= B1.team_id
) LEFT JOIN ost_department
B2 ON (A4.object_type
= 'D' AND A4.object_id
= B2.id
) LEFT JOIN ost_department
B3 ON (A7.object_type
= 'D' AND A7.object_id
= B3.id
) LEFT JOIN ost_ticket__cdata
B4 ON (A1.ticket_id
= B4.ticket_id
) LEFT JOIN ost_ticket_priority
B5 ON (B4.priority
= B5.priority_id
) LEFT JOIN ost_user
B6 ON (A1.user_id
= B6.id
) LEFT JOIN ost_staff
B7 ON (A1.staff_id
= B7.staff_id
) LEFT JOIN ost_team
B8 ON (A1.team_id
= B8.team_id
) LEFT JOIN ost_lock
C0 ON (A1.lock_id
= C0.lock_id
) WHERE A2.state
= 'open' AND ((A2.state
= 'open' AND (A1.staff_id
= 1 OR A5.staff_id
= 1 OR A6.object_type
= 'C' AND A8.staff_id
= 1 OR A1.team_id
IN (1, 2) OR B0.team_id
IN (1, 2) OR A6.object_type
= 'C' AND B1.team_id
IN (1, 2))) OR A1.dept_id
IN (1, 2, 3) OR B2.id
IN (1, 2, 3) OR A6.object_type
= 'C' AND B3.id
IN (1, 2, 3)) AND (A1.ticket_pid
IS NULL OR A1.flags
& 8 != 0) GROUP BY A1.ticket_id
ORDER BY B5.priority_urgency
ASC, A1.lastupdate
DESC LIMIT 30]
Unknown column 'B4.subject' in 'field list'<br />
<br />
---- Backtrace ----<br />
#0 (root)/include/mysqli.php(211): osTicket->logDBError()<br />
#1 (root)/include/class.orm.php(3482): db_query()<br />
#2 (root)/include/class.orm.php(3529): MySqlExecutor->execute()<br />
#3 (root)/include/class.orm.php(2104): MySqlExecutor->getArray()<br />
#4 (root)/include/class.orm.php(2054): HashArrayIterator->{closure}()<br />
#5 (root)/include/class.orm.php(2033): CallbackSimpleIterator->next()<br />
#6 (root)/include/class.orm.php(2042): CallbackSimpleIterator->rewind()<br />
#7 (root)/include/class.orm.php(1713): CallbackSimpleIterator->valid()<br />
#8 (root)/include/class.orm.php(1723): CachedResultSet->fillTo()<br />
#9 (root)/include/class.orm.php(1739): CachedResultSet->asArray()<br />
#10 (root)/include/staff/templates/queue-tickets.tmpl.php(258): CachedResultSet->getIterator()<br />
#11 (root)/scp/tickets.php(569): require_once('...')<br />
#12 {main}
I could restore the database from the last backup, but I'd lose about a week's worth of work. (I didn't think a backup was necessary before adding a new field)
We've more fields to add over the next few weeks, including adding support for another company.
Are there any ideas on why this is the case?
Are there any keywords that should be avoided?