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