mt-daapd のデータベースが壊れて起動しなくなった

焼きそば!

iTunes を起動しても mt-daapd が見えなくなってた。最近、mt-daapd だけ落ちる事があるので、特に気にもせずにサーバにログインして手で起動してみる。

paraches@debian:~$ sudo /etc/init.d/mt-daapd start
Starting mt-daapd: mt-daapd.

で、iTunes に mt-daapd が出てくるのを待つけど出てこない。あれれ?
とりあえずサーバで mt-daapd が起動してるか見てみる。

paraches@debian:~$ ps ax | grep mt
 2919 pts/0    S+     0:00 grep mt

起動してない…。
何が起きたんだろう? というわけで、mt-daapd のログを確認してみる。

2008-08-16 13:49:58 (b74d0a60): Starting with debuglevel 2
2008-08-16 13:49:58 (b74d0a60): Starting rendezvous daemon
2008-08-16 13:49:58 (b74d0a60): Starting signal handler
2008-08-16 13:49:58 (b748dbb0): Signal handler started
2008-08-16 13:49:59 (b74d0a60): Initializing database
2008-08-16 13:49:59 (b74d0a60): Query: vacuum
2008-08-16 13:49:59 (b74d0a60): Error: database disk image is malformed
2008-08-16 13:49:59: Aborting
2008-08-16 13:49:59 (b6c8cbb0): Rendezvous socket closed (daap server crashed?)  Aborting.
2008-08-16 13:49:59: Aborting

良く解らないけど、たぶん database disk image がおかしくなってるって事が原因ね。修復するとかのオプションあるのかな? なんて考えもせずに「んじゃ、また最初から新しく作ってもらおう!」ということに。
データベースのデータは /var/cache/mt-daapd に作られてるから、この中身を消しちゃえば新しく作ってくれる。

paraches@debian:/var/cache/mt-daapd$ sudo rm songs3.db*
paraches@debian:/var/cache/mt-daapd$ ls
paraches@debian:/var/cache/mt-daapd$ 

で、消したら mt-daapd を再起動して mt-daapd が起動するかどうか確認。

paraches@debian:/var/cache/mt-daapd$ sudo /etc/init.d/mt-daapd start
Starting mt-daapd: mt-daapd.
paraches@debian:~$ ps ax | grep mt
16134 pts/0    Sl     0:00 /usr/sbin/mt-daapd
16136 pts/0    Rl     0:03 /usr/sbin/mt-daapd
16292 pts/1    R+     0:00 grep mt
paraches@debian:~$ 

ちゃんと起動してる。
で、今度はログを見てみよう。

paraches@debian:/var/cache/mt-daapd$ cd /var/log
paraches@debian:/var/log$ cat mt-daapd.log 
<省略>
2008-08-16 15:58:56 (b7596a60): Starting with debuglevel 2
2008-08-16 15:58:56 (b7596a60): Starting rendezvous daemon
2008-08-16 15:58:56 (b7596a60): Starting signal handler
2008-08-16 15:58:56 (b7553bb0): Signal handler started
2008-08-16 15:58:57 (b7596a60): Error: enum_begin failed (error 1): Misc SQL Error: no such table: config
2008-08-16 15:58:57 (b7596a60): Can't get db version. New database?
2008-08-16 15:58:57 (b7596a60): Initializing database
2008-08-16 15:58:57 (b7596a60): Error: enum_begin failed (error 1): ?
2008-08-16 15:58:57 (b7596a60): Error: enum_begin failed (error 1): ?
2008-08-16 15:58:57 (b7596a60): Full reload...
2008-08-16 15:58:58 (b7596a60): Starting mp3 scan
2008-08-16 16:03:50 (b7596a60): Starting playlist scan
2008-08-16 16:03:50 (b7596a60): Scanned 13002 songs in 292 seconds
2008-08-16 16:03:50 (b7596a60): Starting web server from /usr/share/mt-daapd/admin-root on port 3689
2008-08-16 16:03:50 (b7596a60): Registering rendezvous names
2008-08-16 16:03:50 (b7596a60): Serving 13002 songs.  Startup complete in 292 seconds
paraches@debian:/var/cache$ 

というわけで、ちゃんと作り直してくれてるみたい。
iTunes からも mt-daapd が見えるようになったし。めでたし、めでたし。