我正在尝试使用Rails3 pre和最新的数据映射器将我的应用程序从MySql迁移到Postgresql。
我有几个模型是通过使用: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=>:跳转到字段定义时,我认为我已经成功了,但是当我尝试运行auto_migrate时,我不断地得到那个错误。我想:skip意味着它将忽略依赖项,但也许这只适用于删除行而不是删除表?
我应该提到的是,我可以在对数据库进行一次核攻击之后运行auto_migrate,但是在那之后,会出现错误。
非常感谢任何建议或建议。
编辑:datamapper irc上的Gibheer建议使用auto_upgrade代替-它不会尝试重新创建表。

最佳答案

我在导入外部数据和关系时遇到了类似的问题,有人建议我在开始插入数据之前尝试DataMapper.finalize.auto_migrate!。希望有帮助

关于ruby-on-rails - DataMapper:使用auto_migrate!有多对多的依赖关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2871911/

10-16 22:27