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.

Reply via email to