преобразование рельсов дБ из postgres -> mysql - PullRequest
0 голосов
/ 03 октября 2011

Я конвертировал БД, используя это:

https://github.com/maxlapshin/mysql2postgres

На первый взгляд, похоже, что это сработало. Таблицы / столбцы / индексы находятся внутри postgres ... Отлично.

Однако db: migrate хочет выполнить все мои миграции. Это как если бы таблица schema_migrations не была правильно преобразована или не имела записей. Но он имеет все записи и выглядит так же, как в MySQL.

Тот или иной адаптер postgres отслеживает миграции другим способом.

1 Ответ

2 голосов
/ 03 октября 2011

Вы уверены, что ваша таблица 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, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...