Hi Folks,
I have an issue wich might result from an update to trunk and then
back to 0.12.2.
I had sporadically the error messag above but now I have found a
reproducable constellation: When I go to Admin > Versions > add new
version ; I receive the attached message. How can I fix this? Is there
a way to save the content of the DB and reinstall trac? Or would this
also recopy the mismatching column count?
---
Oops…
Trac detected an internal error:
OperationalError: (1136, "Column count doesn't match value count at
row 1")
System Information:
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/
4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR
3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729)
Trac 0.12.2
Babel 0.9.6
Genshi 0.6
mod_python 3.3.1
MySQL server: "5.0.51a-24+lenny5-log", client: "5.1.49", thread-safe:
1
MySQLdb 1.2.2
Python 2.6.6 (r266:84292, Dec 27 2010, 00:18:12) [GCC 4.4.5]
pytz 2010b
setuptools 0.6
Subversion 1.6.12 (r955767)
jQuery 1.4.2
Python Traceback
Most recent call last:
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 511, in _dispatch_request Code fragment:Line
506 try:
507 if not env and env_error:
508 raise HTTPInternalError(env_error)
509 try:
510 dispatcher = RequestDispatcher(env)
511 dispatcher.dispatch(req)
512 except RequestDone:
513 pass
514 resp = req._response or []
515
516 except HTTPException, e:
Local variables:Name Value
dispatcher <trac.web.main.RequestDispatcher object at 0xb9185d8c>
e OperationalError(1136, "Column count doesn't match value count at
row 1")
env <trac.env.Environment object at 0xb8ab1dac>
env_error None
req <Request "POST '/admin/ticket/versions/von_SSF11'">
resp []
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 237, in dispatch Code fragment:Line
232 msg = _('Do you have cookies
enabled?')
233 raise HTTPBadRequest(_('Missing or invalid
form token.'
234 ' %(msg)s',
msg=msg))
235
236 # Process the request and render the template
237 resp = chosen_handler.process_request(req)
238 if resp:
239 if len(resp) == 2: # Clearsilver
240 chrome.populate_hdf(req)
241 template, content_type = \
242 self._post_process_request(req,
*resp)
Local variables:Name Value
chosen_handler <trac.admin.web_ui.AdminModule object at 0xb9185dec>
chrome <trac.web.chrome.Chrome object at 0xb91857ac>
ctype 'application/x-www-form-urlencoded'
err (<class '_mysql_exceptions.OperationalError'>,
OperationalError(1136, ...
handler <trac.admin.web_ui.AdminModule object at 0xb9185dec>
options {}
req <Request "POST '/admin/ticket/versions/von_SSF11'">
self <trac.web.main.RequestDispatcher object at 0xb9185d8c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/admin/web_ui.py", line 116, in process_request Code
fragment:Line
111 if not provider:
112 raise HTTPNotFound(_('Unknown administration panel'))
113
114 if hasattr(provider, 'render_admin_panel'):
115 template, data = provider.render_admin_panel(req,
cat_id, panel_id,
116
path_info)
117
118 else: # support for legacy WebAdmin panels
119 data = {}
120 cstmpl, ct = provider.process_admin_request(req,
cat_id, panel_id,
121
path_info)
Local variables:Name Value
_panel_order <function _panel_order at 0xb95d1c34>
cat_id u'ticket'
panel_id u'versions'
panels [('general', u'General', 'basics', u'Basic Settings'),
('general', ...
path_info u'von_SSF11'
provider <trac.ticket.admin.VersionAdminPanel object at 0xb92e282c>
providers {('general', 'basics'): <trac.admin.web_ui.BasicsAdminPanel
object at ...
req <Request "POST '/admin/ticket/versions/von_SSF11'">
self <trac.admin.web_ui.AdminModule object at 0xb9185dec>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/admin.py", line 53, in render_admin_panel Code
fragment:Line
48
49 def render_admin_panel(self, req, cat, page, version):
50 req.perm.require('TICKET_ADMIN')
51 # Trap AssertionErrors and convert them to TracErrors
52 try:
53 return self._render_admin_panel(req, cat, page,
version)
54 except AssertionError, e:
55 raise TracError(e)
56
57
58 def _save_config(config, req, log):
Local variables:Name Value
cat u'ticket'
page u'versions'
req <Request "POST '/admin/ticket/versions/von_SSF11'">
self <trac.ticket.admin.VersionAdminPanel object at 0xb92e282c>
version u'von_SSF11'
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/admin.py", line 457, in _render_admin_panel Code
fragment:Line
452 ver.time =
parse_date(req.args.get('time'), req.tz,
453 'datetime')
454 else:
455 ver.time = None # unset
456 ver.description = req.args.get('description')
457 ver.update()
458 add_notice(req, _('Your changes have been
saved.'))
459 req.redirect(req.href.admin(cat, page))
460 elif req.args.get('cancel'):
461 req.redirect(req.href.admin(cat, page))
462
Local variables:Name Value
cat u'ticket'
page u'versions'
req <Request "POST '/admin/ticket/versions/von_SSF11'">
self <trac.ticket.admin.VersionAdminPanel object at 0xb92e282c>
ver <trac.ticket.model.Version object at 0xb952a22c>
version u'von_SSF11'
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/model.py", line 1146, in update Code fragment:Line
1141 assert self.exists, 'Cannot update non-existent version'
1142 self.name = simplify_whitespace(self.name)
1143 if not self.name:
1144 raise TracError(_('Invalid version name.'))
1145
1146 @self.env.with_transaction(db)
1147 def do_update(db):
1148 cursor = db.cursor()
1149 self.env.log.info('Updating version "%s"' %
self.name)
1150 cursor.execute("""
1151 UPDATE version SET name=%s,time=%s,description=%s
WHERE name=%s
Local variables:Name Value
db None
self <trac.ticket.model.Version object at 0xb952a22c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/api.py", line 77, in transaction_wrapper Code fragment:Line
72 elif ldb:
73 fn(ldb)
74 else:
75 ldb = _transaction_local.db = env.get_db_cnx()
76 try:
77 fn(ldb)
78 ldb.commit()
79 _transaction_local.db = None
80 except:
81 _transaction_local.db = None
82 ldb.rollback()
Local variables:Name Value
db None
env <trac.env.Environment object at 0xb8ab1dac>
fn <function do_update at 0xb95d19cc>
ldb None
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/model.py", line 1159, in do_update Code fragment:Line
1154 if self.name != self._old_name:
1155 # Update tickets
1156 cursor.execute("UPDATE ticket SET version=%s
WHERE version=%s",
1157 (self.name, self._old_name))
1158 self._old_name = self.name
1159 TicketSystem(self.env).reset_ticket_fields()
1160
1161 @classmethod
1162 def select(cls, env, db=None):
1163 if not db:
1164 db = env.get_read_db()
Local variables:Name Value
cursor <trac.db.util.IterableCursor object at 0xb9333c4c>
db <trac.db.pool.PooledConnection object at 0xb93ce9dc>
self <trac.ticket.model.Version object at 0xb952a22c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/api.py", line 270, in reset_ticket_fields Code
fragment:Line
265 f[label] = gettext(f[label])
266 return fields
267
268 def reset_ticket_fields(self):
269 """Invalidate ticket field cache."""
270 del self.fields
271
272 @cached
273 def fields(self, db):
274 """Return the list of fields available for tickets."""
275 from trac.ticket import model
Local variables:Name Value
self <trac.ticket.api.TicketSystem object at 0xb92d930c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 47, in __delete__ Code fragment:Line
42 id = getattr(instance, self.id_attr)
43 else:
44 id = self.id
45 if id is None:
46 id = self.id = self.make_id(instance.__class__)
47 CacheManager(instance.env).invalidate(id)
48
49 def make_id(self, cls):
50 attr = self.retriever.__name__
51 for base in cls.mro():
52 if base.__dict__.get(attr) is self:
Local variables:Name Value
id 'trac.ticket.api.TicketSystem.fields'
instance <trac.ticket.api.TicketSystem object at 0xb92d930c>
self <trac.cache.CachedProperty object at 0xb901d72c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 185, in invalidate Code fragment:Line
180 # - If the row exists, the UPDATE increments the
generation, the
181 # SELECT returns a row and we're done.
182 # - If the row doesn't exist, the UPDATE does
nothing, but starts
183 # a transaction. The SELECT then returns nothing,
and we can
184 # safely INSERT a new row.
185 @self.env.with_transaction()
186 def do_invalidate(db):
187 cursor = db.cursor()
188 cursor.execute("""
189 UPDATE cache SET generation=generation+1 WHERE
id=%s
190 """, (id,))
Local variables:Name Value
db <trac.db.pool.PooledConnection object at 0xb93ce9dc>
id 'trac.ticket.api.TicketSystem.fields'
self <trac.cache.CacheManager object at 0xb917cfac>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/api.py", line 73, in transaction_wrapper Code fragment:Line
68 _transaction_local.db = None
69 else:
70 assert ldb is db, "Invalid transaction nesting"
71 fn(db)
72 elif ldb:
73 fn(ldb)
74 else:
75 ldb = _transaction_local.db = env.get_db_cnx()
76 try:
77 fn(ldb)
78 ldb.commit()
Local variables:Name Value
db None
env <trac.env.Environment object at 0xb8ab1dac>
fn <function do_invalidate at 0xb95d1cdc>
ldb <trac.db.pool.PooledConnection object at 0xb93ce9dc>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 195, in do_invalidate Code fragment:Line
190 """, (id,))
191 cursor.execute("SELECT generation FROM cache WHERE
id=%s",
192 (id,))
193 if not cursor.fetchone():
194 cursor.execute("INSERT INTO cache VALUES (%s,
%s)",
195 (id, 0))
196
197 # Invalidate in this process
198 self._cache.pop(id, None)
199
200 # Invalidate in this thread
Local variables:Name Value
cursor <trac.db.util.IterableCursor object at 0xb933392c>
db <trac.db.pool.PooledConnection object at 0xb93ce9dc>
id 'trac.ticket.api.TicketSystem.fields'
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/util.py", line 65, in execute Code fragment:Line
60 return r
61 except Exception, e:
62 self.log.debug('execute exception: %r', e)
63 raise
64 if args:
65 return self.cursor.execute(sql_escape_percent(sql),
args)
66 return self.cursor.execute(sql)
67
68 def executemany(self, sql, args):
69 if self.log:
70 self.log.debug('SQL: %r', sql)
Local variables:Name Value
args ('trac.ticket.api.TicketSystem.fields', 0)
self <trac.db.util.IterableCursor object at 0xb933392c>
sql 'INSERT INTO cache VALUES (%s, %s)'
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in
execute Code fragment:Line
161 self.errorhandler(self, TypeError, m)
162 except:
163 exc, value, tb = exc_info()
164 del tb
165 self.messages.append((exc, value))
166 self.errorhandler(self, exc, value)
167 self._executed = query
168 if not self._defer_warnings: self._warning_check()
169 return r
170
171 def executemany(self, query, args):
Local variables:Name Value
ListType <type 'list'>
TupleType <type 'tuple'>
args ('trac.ticket.api.TicketSystem.fields', 0)
charset 'utf8'
db <weakproxy at 0xb8d294dc to Connection at 0xb91a4fec>
exc <class '_mysql_exceptions.OperationalError'>
exc_info <built-in function exc_info>
query "INSERT INTO cache VALUES
('trac.ticket.api.TicketSystem.fields', 0)"
self <trac.db.mysql_backend.MySQLUnicodeCursor object at 0xb933330c>
value OperationalError(1136, "Column count doesn't match value count
at row 1")
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35,
in defaulterrorhandler Code fragment:Line
30 cursor.messages.append(error)
31 else:
32 connection.messages.append(error)
33 del cursor
34 del connection
35 raise errorclass, errorvalue
36
37
38 class Connection(_mysql.connection):
39
40 """MySQL Database Connection Object"""
Local variables:Name Value
error (<class '_mysql_exceptions.OperationalError'>,
OperationalError(1136, ...
errorclass <class '_mysql_exceptions.OperationalError'>
errorvalue OperationalError(1136, "Column count doesn't match value
count at row 1")
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 511, in _dispatch_request
dispatcher.dispatch(req)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 237, in dispatch
resp = chosen_handler.process_request(req)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/admin/web_ui.py", line 116, in process_request
path_info)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/admin.py", line 53, in render_admin_panel
return self._render_admin_panel(req, cat, page, version)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/admin.py", line 457, in _render_admin_panel
ver.update()
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/model.py", line 1146, in update
@self.env.with_transaction(db)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/api.py", line 77, in transaction_wrapper
fn(ldb)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/model.py", line 1159, in do_update
TicketSystem(self.env).reset_ticket_fields()
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/api.py", line 270, in reset_ticket_fields
del self.fields
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 47, in __delete__
CacheManager(instance.env).invalidate(id)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 185, in invalidate
@self.env.with_transaction()
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/api.py", line 73, in transaction_wrapper
fn(ldb)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/cache.py", line 195, in do_invalidate
(id, 0))
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/db/util.py", line 65, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in
execute
self.errorhandler(self, exc, value)
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35,
in defaulterrorhandler
raise errorclass, errorvalue
--
You received this message because you are subscribed to the Google Groups "Trac
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/trac-users?hl=en.