从postgres转换rails db - > MySQL的

时间:2011-10-03 04:35:14

标签: mysql ruby-on-rails postgresql

我用这个转换了数据库:

https://github.com/maxlapshin/mysql2postgres

一眼就看起来很有效。在postgres里面有表/列/索引...很棒。

但是,db:migrate想要运行我的所有迁移。就好像schema_migrations表没有正确转换 - 或者没有记录。但它确实拥有所有记录,并且与mysql中的记录相同。

那个或postgres适配器以其他方式跟踪迁移。

1 个答案:

答案 0 :(得分:2)

您确定schema_migrations表格是否具有正确的架构?进入psql并执行:

> \d schema_migrations

你应该看到这个:

       Table "public.schema_migrations"
 Column  |          Type          | Modifiers 
---------+------------------------+-----------
 version | character varying(255) | not null
Indexes:
    "unique_schema_migrations" UNIQUE, btree (version)

或差不多。

如果它看起来像db:migrate仍然想要运行所有迁移,那么您可能在列值或类似的东西中有一些杂散空格。您可以浪费更多时间来修复它,或者您可以手动重建它并继续进行更有趣的活动。来自psql

> drop table schema_migrations;
> create table schema_migrations (
    version varchar(255) not null,
    constraint unique_schema_migrations unique (version)
);

然后从您的迁移目录(假设您使用的是Unixy):

$ for m in *.rb; do printf "insert into schema_migrations (version) values ('%s');\n" $(echo $m | sed 's/_.*//');done | psql -h your_host -U your_user -d your_db

当然,您必须为-h-U-d切换提供正确的值。