[Yum] sqlite3.OperationalError: Could not decode to UTF-8 column 'beg_rv' with text ''

Sam Thursfield ssssam at gmail.com
Sun Oct 13 20:27:05 UTC 2013


Hi

I'm running Fedora 18 and I'm finding that 'yum' fails with the
following backtrace when I try to update or install packages:


Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Traceback (most recent call last):
  File "./yummain.py", line 364, in <module>
    user_main(sys.argv[1:], exit_code=True)
  File "./yummain.py", line 355, in user_main
    errcode = main(args)
  File "./yummain.py", line 261, in main
    return_code = base.doTransaction()
  File "/home/sam/src/yum/cli.py", line 769, in doTransaction
    resultobject = self.runTransaction(cb=cb)
  File "/home/sam/src/yum/yum/__init__.py", line 1764, in runTransaction
    lastdbv = self.history.last()
  File "/home/sam/src/yum/yum/history.py", line 1268, in last
    ret = self.old([], 1, complete_transactions_only)
  File "/home/sam/src/yum/yum/history.py", line 1217, in old
    executeSQL(cur, sql, params)
  File "/home/sam/src/yum/yum/sqlutils.py", line 167, in executeSQLQmark
    return cursor.execute(query)
sqlite3.OperationalError: Could not decode to UTF-8 column 'beg_rv' with text ''

I have tried running 'yum clean all', and the problem persists.

A little tracing through the code showed me that this is the SQL query
which is failing:

SELECT tid,
                         trans_beg.timestamp AS beg_ts,
                         trans_beg.rpmdb_version AS beg_rv,
                         trans_end.timestamp AS end_ts,
                         trans_end.rpmdb_version AS end_rv,
                         loginuid, return_code
                  FROM trans_beg JOIN trans_end USING(tid) ORDER BY
tid DESC LIMIT 1

And a bit of poking in
'/var/lib/yum/history/history-2012-12-15.sqlite' shows that somehow
I've got an empty string into the trans_beg.rpmdb_version column:

sqlite> SELECT * from trans_beg where length(rpmdb_version) == 0;
92|1375041301||1000

However, there are no results for either of these queries:
sqlite> SELECT * from trans_beg where rpmdb_version == NULL;
sqlite> SELECT * from trans_beg where rpmdb_version == '';

The SQLite version on the system is 3.7.13


I imagine I can fix this by deleting the history.sqlite file, but I
thought I'd raise it here on this list first because I couldn't find
this issue documented anywhere on the web and it's a bit of a
showstopper.

Thanks
Sam


More information about the Yum mailing list