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

Sam Thursfield ssssam at gmail.com
Sat Oct 26 15:08:58 UTC 2013


Hi again

On Sun, Oct 13, 2013 at 9:27 PM, Sam Thursfield <ssssam at gmail.com> wrote:
> 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.

I decided to try moving /var/lib/yum/history/history-2012-12-15.sqlite
and .sqlite-journal out of the way to see if Yum would work OK. It
fixed the issue and Yum is working fine for far, so it seems to me
that's a good solution for anyone else who sees this issue.

Sam


More information about the Yum mailing list