migration v3.6がSQLite(MDB2 v2.5.0a2)では期待通りに動かない

CakePHPでマイグレーション使うのに便利そうな
cakephp-migrations – Google Code
http://code.google.com/p/cakephp-migrations/

のmigration v3.6ですが、SQLiteだと期待通りに動きません。結論から言えばPEAR MDB2のバグだそうです。

期待通り動かない例は以下。

001_create_users_table.yml
UP:
create_table:
   users:
     mail: string
     pass: string
DOWN:
drop_table: users

これでmigrateすると期待通りに動きます。show create table statementで表示すると

CREATE  TABLE users (id INTEGER NOT NULL PRIMARY KEY, mail VARCHAR(255) DEFAULT NULL, pass VARCHAR(255) DEFAULT NULL, created DATETIME DEFAULT NULL NOT NULL, modified DATETIME DEFAULT NULL NOT NULL)

しかし、

002_add_cols_to_users.yml
UP:
add_field:
   users:
     is_active: boolean
DOWN:
drop_field:
   users: is_active

これでmigrateすると期待していた

CREATE  TABLE users (id INTEGER NOT NULL PRIMARY KEY, mail VARCHAR(255) DEFAULT NULL, pass VARCHAR(255) DEFAULT NULL, created DATETIME DEFAULT NULL NOT NULL, modified DATETIME DEFAULT NULL NOT NULL, is_active BOOLEAN
DEFAULT NULL)

ではなく

CREATE  TABLE users (id INTEGER NOT NULL, mail VARCHAR(255) DEFAULT NULL, pass VARCHAR(255) DEFAULT NULL, created DATETIME DEFAULT '1970-01-01 00:00:00' NOT NULL, modified DATETIME DEFAULT '1970-01-01 00:00:00' NOT NULL, is_active BOOLEAN DEFAULT NULL)

となってしまい、idのPRIMARY KEYが消えてしまいます。

困ったので例によって嘘英語でバグを報告してみました。するとJoelMossから返事があって、migration側はちゃんとデータを投げているのにMDB2側にバグがあるそうです。
Issue 1 – cakephp-migrations – Google Code
http://code.google.com/p/cakephp-migrations/issues/detail?id=1

migrateのソースを見ても私の能力不足で何をしているのかよくわかりません。いわんやMDB2をやなので、これ以上は無理です。PEARにどうバグ報告していいのかも分かりませんし。
現時点のMDB2 最新alpha v2.5.0a2 でダメなので、SQLiteでmigration使いたい人はMDB2がバグフィックスされるまでしょんぼり待ちましょう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中