DataMapper: с помощью auto_migrate! с зависимостями «многие ко многим»?

Я пытаюсь перенести свое приложение с MySql на Postgresql, используя Rails3-pre и последнюю версию DataMapper.

У меня есть несколько моделей, которые связаны отношениями «многие ко многим» с использованием :through => Resource, что означает, что DataMapper создает таблицу соединений с внешними ключами для обеих моделей. Я не могу выполнить автомиграцию! эти изменения, потому что я продолжаю получать это:

ERROR:  cannot drop table users because other objects depend on it
DETAIL:  constraint artist_users_owner_fk on table artist_users depends on table users
constraint site_users_owner_fk on table site_users depends on table users
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Я пробовал все, что мог придумать, и думал, что у меня все работает, когда я добавлял :constraint => :skip к определению поля, но я продолжаю получать эту ошибку, когда пытаюсь запустить auto_migrate. Я думал, что :skip означает, что он будет игнорировать иждивенцев, но, может быть, это применимо только к удалению строк, а не к удалению таблиц?

Я должен упомянуть, что я могу запустить auto_migrate после того, как я один раз перезагрузил базу данных, но после этого ошибки.

Любые предложения или советы очень ценятся.

Редактировать: Gibheer на datamapper irc предложил вместо этого использовать auto_upgrade - он не пытается воссоздать таблицы.


person pschuegr    schedule 20.05.2010    source источник


Ответы (2)


У меня была аналогичная проблема с импортом внешних данных и отношений, кто-то предложил попробовать DataMapper.finalize.auto_migrate!, прежде чем начинать вставлять данные. Надеюсь, поможет

person Tom    schedule 10.07.2010

У меня была точно такая же проблема, но она не была решена с помощью auto_migrate или auto_upgrade.

Я создал модель с тем же именем, что и автоматически выбранное имя таблицы «многие ко многим», а затем удалил файл модели, не удаляя таблицу, что, как мне кажется, вызвало проблему, когда я проходил процесс миграции.

После ручного удаления таблицы пересечений я смог выполнить все миграции (несколько раз вверх/вниз) с данными без проблем.

person ConstantineK    schedule 04.04.2016