Modify

Opened 4 years ago

Closed 2 years ago

#8343 closed defect (fixed)

ProgrammingError: (1064, "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 ') and time_started >= 1292889600 and time_started < 1293556199' at line 1")

Reported by: christer Owned by: rjollos
Priority: high Component: TracHoursPlugin
Severity: normal Keywords: mysql hours
Cc: Trac Release: 0.12

Description

How to Reproduce

While doing a GET operation on /hours, Trac issued an internal error.

(please provide additional details here)

Request parameters:

{/trac/hours}

User agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc13 Firefox/3.6.12

System Information

Trac 0.12
Babel 0.9.5
Docutils 0.6
Genshi 0.6
mod_wsgi 3.2 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL})
MySQL server: "5.0.77-log", client: "5.1.52", thread-safe: 0
MySQLdb 1.2.3c1
Pygments 1.3.1
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)]
setuptools 0.6
Subversion 1.6.13 (r1002816)
jQuery 1.4.2

Enabled Plugins

TracHoursPlugin 0.5.2

Python Traceback

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Trac-0.12-py2.7.egg/trac/web/main.py", line 513, in _dispatch_request
    dispatcher.dispatch(req)
  File "/usr/lib/python2.7/site-packages/Trac-0.12-py2.7.egg/trac/web/main.py", line 235, in dispatch
    resp = chosen_handler.process_request(req)
  File "/usr/lib/python2.7/site-packages/TracHoursPlugin-0.5.2-py2.7.egg/trachours/hours.py", line 243, in process_request
    return self.process_timeline(req)
  File "/usr/lib/python2.7/site-packages/TracHoursPlugin-0.5.2-py2.7.egg/trachours/hours.py", line 518, in process_timeline
    return self.display_html(req, query)
  File "/usr/lib/python2.7/site-packages/TracHoursPlugin-0.5.2-py2.7.egg/trachours/hours.py", line 711, in display_html
    time_records = self.get_ticket_hours(ticket_ids, from_date=from_date, to_date=to_date, worker_filter=data['cur_worker_filter'])
  File "/usr/lib/python2.7/site-packages/TracHoursPlugin-0.5.2-py2.7.egg/trachours/hours.py", line 144, in get_ticket_hours
    result = get_all_dict(self.env, sql, *args)
  File "/usr/lib/python2.7/site-packages/TracSQLHelper-0.2.1-py2.7.egg/tracsqlhelper/__init__.py", line 51, in get_all_dict
    desc, rows = get_all(env, sql, *params);
  File "/usr/lib/python2.7/site-packages/TracSQLHelper-0.2.1-py2.7.egg/tracsqlhelper/__init__.py", line 23, in __call__
    cur.execute(sql, params)
  File "/usr/lib/python2.7/site-packages/Trac-0.12-py2.7.egg/trac/db/util.py", line 65, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 173, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
ProgrammingError: (1064, "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 ') and time_started >= 1292889600 and time_started < 1293556199' at line 1")

Attachments (0)

Change History (5)

comment:1 Changed 4 years ago by christer@…

It seems like this might be due to no tickets being in the system yet.

I bypassed the issue by making the following change. I am not familiar enough with Python to know if all of the changes are required or not.

123c123
<     def get_ticket_hours(self, ticket_id, from_date=None, to_date=None, worker_filter=None):
---
>     def get_ticket_hours(self, ticket_id=None, from_date=None, to_date=None, worker_filter=None):
124a125
>         where = None
128c129
<         else:
---
>         elif ticket_id != None && len(ticket_id) > 0:
132c133,135
<             where += " and time_started >= %s"
---
>             if where != None:
>                 where += " and"
>             where += " time_started >= %s"
136c139,141
<             where += " and time_started < %s"
---
>             if where != None:
>                 where += " and"
>             where += " time_started < %s"
140c145,147
<             where += " and worker = %s"
---
>             if where != None:
>                 where += " and"
>             where += " worker = %s"

comment:2 Changed 4 years ago by rjollos

  • Priority changed from normal to high
  • Status changed from new to assigned

comment:3 Changed 4 years ago by rjollos

Seems to work fine with no tickets in the system under SQLite, so might be a MySQL specific issue.

comment:4 Changed 4 years ago by rjollos

#8391 has a patch for a similar issue under PostgreSQL. That patch is very simple. Would you be able to test it out if I can apply it to the trunk? I'm currently only setup to develop with SQLite, so I won't otherwise be able to deal with this issue for a little while.

comment:5 Changed 2 years ago by rjollos

  • Resolution set to fixed
  • Status changed from assigned to closed

This issue should be fixed in [12204]. Please report back if it is working well for you now.

Add Comment

Modify Ticket

Action
as closed The owner will remain rjollos.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.