MythTVとSQL
CVS udpateした途端ジョブキューの表示ができなくなり、トランスコードに失敗するようになった。調べてみると、
libs/libmythtv/programinfo.cppの
thequery = QString("SELECT recorded.chanid,starttime,endtime,title, " "subtitle,description,channel.channum, " "channel.callsign,channel.name,channel.commfree, " "channel.outputfilters,seriesid,programid,filesize, " "lastmodified,stars,previouslyshown,originalairdate, " "category_type, hostname " "FROM recorded " "LEFT JOIN channel " "ON recorded.chanid = channel.chanid " "WHERE recorded.chanid = %1 " "AND starttime = %2;") .arg(channel).arg(starttime);
この部分のSQL文を手動で実行してみると、
ERROR 1054: Unknown column 'category_type' in 'field list'
というエラーが出た。
% cvs diff -u -r 1.177 -r 1.176 programinfo.cpp (snip) --- programinfo.cpp 17 Dec 2004 09:44:33 -0000 1.177 +++ programinfo.cpp 14 Dec 2004 03:31:46 -0000 1.176 @@ -524,7 +524,7 @@ "channel.callsign,channel.name,channel.commfree, " "channel.outputfilters,seriesid,programid,filesize, " "lastmodified,stars,previouslyshown,originalairdate, " - "hostname " + "category_type, hostname " "FROM recorded " "LEFT JOIN channel " "ON recorded.chanid = channel.chanid " (snip)
ということなので、これが原因なんだろう。
で、columnを増やすのはどうやればいいのか分からなかったので、データベースの形式が変わったならどこかに変更する方法があるはずと思って探したら、database/old/にそれっぽいファイルがあった。結局、これを参考に
mysql> alter table recorded add column category_type VARCHAR(64) NULL;
というSQL文を実行したらジョブキューがまた動くようになった。
それにしても、これまでSQLなんか使ったことなくて全然知らなかったのが、最近MythTVが動かなくなる度にいじっているうちに、なんとなく覚えてしまった。