メモの日々


2006年02月15日(水) [長年日記]

  • 今日は暑い。

[db] MySQL(4.0.26)が起動しなくなった

my.cnfにInnoDBに関する設定項目を追加したら起動しなくなってしまった。エラーログを見ると

InnoDB: Error: log file /xxxx/ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 67108864 bytes!

とあり、ib_logfile0というファイルのサイズがmy.cnfにある設定値と異なるので起動できないようだ。設定値を変えたのだからサイズが違うのは当たり前だ。

新しい設定値を反映させる方法があるのかと思って調べたが分からなかった。InnoDBのログファイルのサイズは途中で変えることができないのだろうか。

MySQLのフォーラムに同じようなエラーへの回答があって、

Just delete the files that it says are a different size. MySQL will recreate them for you with the proper size (from my.cnf) the next time you start it.

とあった。どうせデータは空なので、試しにib_logfile0を削除してみた。すると、ib_logfile0は自動的に作成されたが今度はib_logfile1のサイズが違うというエラーになった。そこでib_logfile1も削除してみたがib_logfile1は自動的に正しく作成されない(サイズが0になってしまう)ようで、やはりMySQLの起動ができない。

で、ib_logfile0とib_logfile1の両方を削除してみると、それぞれ自動的に作成され、MySQLが起動できるようになった。

これが正しい対処方法なのかは分からない。

(追記)

マニュアルのInnoDB データファイルとログファイルの追加と削除に、

InnoDB ログファイルの数またはサイズを変更する場合は、MySQL をシャットダウンし、エラーなくシャットダウンすることを確認する必要があります。 その後に、シャットダウンで問題が発生した場合に備えて、古いログファイルを安全な場所にコピーします。これらはデータベースをリカバリする際に必要となります。古いログファイルをログファイルディレクトリから削除し、my.cnf を編集してから MySQL を再び起動します。起動時に、InnoDB から新しいログファイルを作成していることが通知されます。

とあるので、上の対処法で正しそう。

[dev] 「テストで手を抜く」 (steps to phantasien)

ユニットテストの話。参考になる。

もう少し手抜きをして楽に自動テストをする方法をいくつか紹介しておく. 以下に示す方法の自動テストは完全な単体テストより品質は劣るものの, 開発者レベルのテストが何もない状態よりはだいぶましになる.

やること

  • 決算
  • カレンダーを買う