[mythtv-users] database version upgrade fail - 25->27
Michael T. Dean
mtdean at thirdcontact.com
Mon Dec 15 03:33:39 UTC 2014
On 12/14/2014 07:06 PM, Dave Matthews wrote:
> I did an upgrade from Ubuntu 12.02 32/MythTV .25 bit to Ubuntu 14.04
> 64 bit/MythTV .27 and now have a database upgrade failure. I think it
> actually started at 1299 but there is no message about going from 1299
> to 1300. Just that it tried to get to 1301. The .27 is from the
> Ubuntu software center.
>
> Text out of mythtv-setup:
>
> Shall I upgrade this database? [yes] 2014-12-14 17:26:29.874638 C
> Database Backup complete.
> 2014-12-14 17:26:29.875128 C Backed up database to file:
> '/var/lib/mythtv/recordings/mythconverg-1300-20141214222611.sql.gz'
> yes
> 2014-12-14 17:50:06.643255 C Upgrading to MythTV schema version 1301
> 2014-12-14 17:50:06.643802 E DB Error (Performing database upgrade):
> Query was: ALTER TABLE channel ADD COLUMN iptvid SMALLINT(6) UNSIGNED;
> Error was: Driver error was [2/1060]:
> QMYSQL: Unable to execute query
> Database error was:
> Duplicate column name 'iptvid'
>
> new version: 1301
> 2014-12-14 17:50:06.643840 E Database schema upgrade failed.
> 2014-12-14 17:50:06.644392 E Couldn't upgrade database to new schema
> htpc at htpc:/home/mythtv$
>
> I originally did the upgrade to Ubuntu 14.04 32 bit with a MythTV
> build out of the repositories. The db did a forward convert with no
> problems but ALSA was not working. I noticed the 32 bit (real old
> install, started around MythTV 20 or less) and decided to do a clean
> install. I am using a backup of the 32 bit database.
>
> What would be useful would be:
> 1) What is the db upgrade script so I can run it and watch what is
> happening? If I just need to fix a few tables to let it run I am good.
> 2) Alternatively all I really care about is access to the old
> recordings. I could let it build an empty .27 database and then
> insert the data from the backup into the tables that point at the
> recordings. Can someone give the list of tables that need to be
> populated to point at the old recordings?
This almost always means that you ran mythbackend on the master host and
it started upgrading the database, but before it could complete the
process, something killed it--like a "just to make sure everything is
working properly" monitor program or upstart's built-in daemon monitor
or ... or even an impatient user who thinks "it must be locked up" or
(and this may well be the problem) mythtv-setup (or some script that
starts mythtv-setup/mythtv-setup.real, as provided by some distros) if
it was started while the backend was doing the upgrade and it killed (on
its own, as some scripts, or after prompting, if canonical mythtv-setup)
mythbackend for the user. Then, when you started mythtv-setup, it tried
to upgrade the partially-upgraded-and-now-completely-broken database and
failed because of the failed upgrade.
So, the proper thing to do now is:
a) shut down everything related to MythTV (all
frontends/backends/clients/...)
b) do a complete restore (
https://www.mythtv.org/wiki/Database_Backup_and_Restore ) of the last
database backup to occur before *all* upgrade attempts (meaning before
the original upgrade attempt that got cancelled, probably started by the
master backend)
c) start mythtv-setup and let it upgrade the database without interruption
Since your initial database upgrade attempt(s) was interrupted, the
state of your database (schema and data) is indeterminate, so the only
proper solution is to go back to a known-good backup
(pre-upgrade-attempts), and then do a successful upgrade.
This is why I still want to remove all ability for mythbackend (on any
host) to upgrade the database and require explicit upgrades. Until I
get permission, it's up to the users to make sure they (or their
systems/scripts/...) don't interrupt upgrades (and/or don't ever start
mythbackend until after the database upgrade has been performed using
mythtv-setup).
Mike
More information about the mythtv-users
mailing list