Southでmigrateするときに一瞬ハマった話

あるブランチで models.py が変更されていた

そういうときにいちいち drop database; とかするのはダルいので South というマイグレーションツールを使う。PyPI と公式ドキュメントは以下
South 0.8.2 : Python Package Index
South
migtation するためのライブラリは有名どころのWAF(というかORM?)ならDjangoじゃなくてもあるかもしれない。migration ツールとはざっくりいえばデータモデル(スキーマ)が変更されたときに追従してくれる便利ツール。

基本は python manage.py migrate (--settings=hoge.huga.piyo) でいい

これだけで Django アプリケーションの models.py が自動的に更新される。便利!

tableがなくてハマった

しかしあるシステムのあるところを押すとエラーでおちた。いろいろMySQLのログとかみてるかぎり「Unknown table "hogemoge"」とあった。つまり新規作成された table があるのね。しかしどう create table 文をかけばいいのかわからないよ……

ログに流れてただけだった

migrate したときのログでながれていたからわかんなかったけど、よくみたら 「must**! create table ....」 と実行すべき SQL 文が流れていた。なのでそれを MySQL で流したら正常に migrate できた。わーい

アホか

それだけです。 tmux のコピーモードでしっかり上の方まで眺めてみないと流れてわかんないってことがあるね、っていう話でした。