Modify ↓
Opened 15 years ago
Closed 12 years ago
#6494 closed defect (invalid)
TracGitPlug-in: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings
Reported by: | Lee Li | Owned by: | Samat Jain |
---|---|---|---|
Priority: | normal | Component: | GitPlugin |
Severity: | blocker | Keywords: | trac, |
Cc: | Zoom.Quiet | Trac Release: | 0.12 |
Description (last modified by )
I always got this message while TracGitPlugin is enable:
ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
View it online: http://proj.shuge.org/pm/browser
Python Traceback Most recent call last:
* File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 495, in _dispatch_request Code fragment: Line 490 try: 491 if not env and env_error: 492 raise HTTPInternalError(env_error) 493 try: 494 dispatcher = RequestDispatcher(env) 495 dispatcher.dispatch(req) 496 except RequestDone: 497 pass 498 resp = req._response or [] 499 500 except HTTPException, e: Local variables: Name Value dispatcher <trac.web.main.RequestDispatcher object at 0x1c30d10> e ProgrammingError('You must not use 8-bit bytestrings unless you use a ... env <trac.env.Environment object at 0x16ed2d0> env_error None exc_info (<class 'pysqlite2.dbapi2.ProgrammingError'>, ProgrammingError('You must ... faulty_plugins [] frames [] has_admin True message u'ProgrammingError: You must not use 8-bit bytestrings unless you use a ... plugins [] req <Request "GET u'/browser'"> resp [] th 'http://trac-hacks.org' traceback u'Traceback (most recent call last):\n File ... tracker 'http://trac.edgewall.org' * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 196, in dispatch Code fragment: Line 191 if not req.path_info or req.path_info == '/': 192 chosen_handler = self.default_handler 193 # pre-process any incoming request, whether a handler 194 # was found or not 195 chosen_handler = self._pre_process_request(req, 196 chosen_handler) 197 except TracError, e: 198 raise HTTPInternalError(e) 199 if not chosen_handler: 200 if req.path_info.endswith('/'): 201 # Strip trailing / and redirect Local variables: Name Value chosen_handler <trac.versioncontrol.web_ui.browser.BrowserModule object at 0x1c30f10> chrome <trac.web.chrome.Chrome object at 0x1b3fc90> err (<class 'pysqlite2.dbapi2.ProgrammingError'>, ProgrammingError('You must ... handler <trac.versioncontrol.web_ui.browser.BrowserModule object at 0x1c30f10> req <Request "GET u'/browser'"> self <trac.web.main.RequestDispatcher object at 0x1c30d10> * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 339, in _pre_process_request Code fragment: Line 334 req.outcookie['trac_form_token']['secure'] = True 335 return req.outcookie['trac_form_token'].value 336 337 def _pre_process_request(self, req, chosen_handler): 338 for filter_ in self.filters: 339 chosen_handler = filter_.pre_process_request(req, chosen_handler) 340 return chosen_handler 341 342 def _post_process_request(self, req, *args): 343 nbargs = len(args) 344 resp = args Local variables: Name Value chosen_handler <trac.versioncontrol.web_ui.browser.BrowserModule object at 0x1c30f10> filter_ <trac.versioncontrol.api.RepositoryManager object at 0x1c3c1d0> req <Request "GET u'/browser'"> self <trac.web.main.RequestDispatcher object at 0x1c30d10> * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/versioncontrol/api.py", line 83, in pre_process_request Code fragment: Line 78 79 def pre_process_request(self, req, handler): 80 from trac.web.chrome import Chrome, add_warning 81 if handler is not Chrome(self.env): 82 try: 83 self.get_repository(req.authname).sync() 84 except TracError, e: 85 add_warning(req, _("Can't synchronize with the repository " 86 "(%(error)s). Look in the Trac log for more " 87 "information.", error=to_unicode(e.message))) 88 Local variables: Name Value Chrome <class 'trac.web.chrome.Chrome'> add_warning <function add_warning at 0x168eb18> handler <trac.versioncontrol.web_ui.browser.BrowserModule object at 0x1c30f10> req <Request "GET u'/browser'"> self <trac.versioncontrol.api.RepositoryManager object at 0x1c3c1d0> * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/versioncontrol/cache.py", line 215, in sync Code fragment: Line 210 cursor.execute("INSERT INTO node_change " 211 " (rev,path,node_type,change_type, " 212 " base_path,base_rev) " 213 "VALUES (%s,%s,%s,%s,%s,%s)", 214 (str(next_youngest), 215 path, kind, action, bpath, brev)) 216 217 # 1.3. iterate (1.1 should always succeed now) 218 self.youngest = next_youngest 219 next_youngest = self.repos.next_rev(next_youngest) 220 Local variables: Name Value action 'M' actionmap {'edit': 'E', 'add': 'A', 'move': 'M', 'copy': 'C', 'delete': 'D'} authz <trac.versioncontrol.api.Authorizer object at 0x1f96310> bpath 'online/seed/urls.py' brev u'c81205e9841ea91f5e1f9f6a22d18279ff8d9120' cset <tracext.git.git_fs.GitChangeset object at 0x203e850> cursor <trac.db.util.IterableCursor object at 0x1e60f90> db <trac.db.pool.PooledConnection object at 0x18c3e10> feedback None key 'youngest_rev' kind 'F' kindmap {'file': 'F', 'dir': 'D'} metadata {u'youngest_rev': u'c81205e9841ea91f5e1f9f6a22d18279ff8d9120', ... name u'youngest_rev' next_youngest 'c85a1a01b4f22c11bfd548e92e2dcf895467880d' path 'online/repo/\xe5\xb7\xa5\xe4\xb8\x9a\xe6\x8a\x80\xe6\x9c\xaf/reStructuredT ... repos_youngest 'ac25c1c5f18e91d86e93c5aa52fb95f80ecd18e6' repository_dir u'git:/home/lee/proj.shuge.org/shuge.git' self <tracext.git.git_fs.CachedRepository2 object at 0x1f96190> value u'c81205e9841ea91f5e1f9f6a22d18279ff8d9120' * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/util.py", line 64, in execute Code fragment: Line 59 return r 60 except Exception, e: 61 self.log.debug('execute exception: %r', e) 62 raise 63 if args: 64 return self.cursor.execute(sql_escape_percent(sql), args) 65 return self.cursor.execute(sql) 66 67 def executemany(self, sql, args=None): 68 if self.log: 69 self.log.debug('SQL: %r', sql) Local variables: Name Value args ('c85a1a01b4f22c11bfd548e92e2dcf895467880d', ... self <trac.db.util.IterableCursor object at 0x1e60f90> sql 'INSERT INTO node_change (rev,path,node_type,change_type, ... * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 76, in execute Code fragment: Line 71 PyFormatCursor.__init__(self, con) 72 self.rows = [] 73 self.pos = 0 74 75 def execute(self, *args): 76 result = PyFormatCursor.execute(self, *args) 77 self.rows = PyFormatCursor.fetchall(self) 78 self.pos = 0 79 return result 80 81 def fetchone(self): Local variables: Name Value args ('INSERT INTO node_change (rev,path,node_type,change_type, ... self <trac.db.sqlite_backend.EagerCursor object at 0x1bcbe90> * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 55, in execute Code fragment: Line 50 raise 51 def execute(self, sql, args=None): 52 if args: 53 sql = sql % (('?',) * len(args)) 54 return self._rollback_on_error(sqlite.Cursor.execute, sql, 55 args or []) 56 def executemany(self, sql, args=None): 57 if args: 58 sql = sql % (('?',) * len(args[0])) 59 return self._rollback_on_error(sqlite.Cursor.executemany, sql, 60 args or []) Local variables: Name Value args ('c85a1a01b4f22c11bfd548e92e2dcf895467880d', ... self <trac.db.sqlite_backend.EagerCursor object at 0x1bcbe90> sql 'INSERT INTO node_change (rev,path,node_type,change_type, ... * File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 47, in _rollback_on_error Code fragment: Line 42 sqlite_version_string = '%d.%d.%d' % (_ver[0], _ver[1], int(_ver[2])) 43 44 class PyFormatCursor(sqlite.Cursor): 45 def _rollback_on_error(self, function, *args, **kwargs): 46 try: 47 return function(self, *args, **kwargs) 48 except sqlite.DatabaseError: 49 self.cnx.rollback() 50 raise 51 def execute(self, sql, args=None): 52 if args: Local variables: Name Value args ('INSERT INTO node_change (rev,path,node_type,change_type, ... function <method 'execute' of 'pysqlite2.dbapi2.Cursor' objects> kwargs {} self <trac.db.sqlite_backend.EagerCursor object at 0x1bcbe90> File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 495, in _dispatch_request dispatcher.dispatch(req) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 196, in dispatch chosen_handler) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/web/main.py", line 339, in _pre_process_request chosen_handler = filter_.pre_process_request(req, chosen_handler) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/versioncontrol/api.py", line 83, in pre_process_request self.get_repository(req.authname).sync() File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/versioncontrol/cache.py", line 215, in sync path, kind, action, bpath, brev)) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/util.py", line 64, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 76, in execute result = PyFormatCursor.execute(self, *args) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 55, in execute args or []) File "/usr/lib64/python2.6/site-packages/Trac-0.12dev_r9078-py2.6.egg/trac/db/sqlite_backend.py", line 47, in _rollback_on_error return function(self, *args, **kwargs)
Trac 0.12dev-r9078 Python 2.6.4 (r264:75706, Jan 19 2010, 02:05:06) [GCC 4.3.4] setuptools 0.6 pytz 2009r SQLite 3.6.20 pysqlite 2.5.6 Genshi 0.6dev-r1092 Babel 1.0dev-r482 Pygments 1.1.1 GIT 1.6.4.4 jQuery 1.3.2
Attachments (0)
Change History (1)
comment:1 Changed 12 years ago by
Component: | TracGitPlugin → GitPlugin |
---|---|
Description: | modified (diff) |
Resolution: | → invalid |
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
This should have been filed against the GitPlugin, but since the ticket is very old, I'm just going to close it.