我正在尝试使用valkyrie将我的本地mysql数据库推送到heroku postgres数据库,如下所示:
valkyrie mysql://localhost/themedb postgres://DATABASE__COLOR_URL/here它似乎开始运行得很好,但随后遇到了一个约束错误,我无法确定:
Transferring 17 tables:
auth_group: 100% |=========================================| Time: 00:00:02
auth_group_per: 100% |=========================================| Time: 00:00:00
auth_message: 100% |=========================================| Time: 00:00:00
auth_permissio: 100% |=========================================| Time: 00:00:02
auth_user: 100% |=========================================| Time: 00:00:00
auth_user_grou: 100% |=========================================| Time: 00:00:00
C:/Program Files (x86)/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/sequel-3.31.0/lib/sequel/adapters/postgre
s.rb:181:in `async_exec': PG::Error: ERROR: relation "user_id" already exists(Sequel::DatabaseError)我认为这些模型来自django.contrib.auth,我不明白为什么会有关系错误。有什么想法吗?
发布于 2013-05-16 04:55:31
这个问题已经在瓦尔基里解决了。以下是valkyrie source对此问题的解释
postgresql索引名称空间是针对每个表的,而不是针对每个数据库的,因此在
到postgresql的迁移中,可能会出现索引名称冲突。
还详细介绍了解决方案:
这段代码检查它是否来自mysql数据库,如果是,则确保尝试创建第二个同名idx不会导致迁移失败,而只是将索引重命名为prepend table name
请注意,gem install valkyrie不会安装“修复”版本。你必须从github获取最新的代码,它工作得很好。
发布于 2012-09-13 11:22:51
您确定目标数据库为空吗?该错误明确地告诉您,当您尝试创建user_id字段时,它已经存在。
发布于 2012-09-13 15:48:09
MySQL中的源数据是干净的吗?是否在您的MySQL数据库中检查约束,并且您正在使用InnoDB吗?
看起来你的dev数据库中可能有一个重复的条目。
https://stackoverflow.com/questions/12398928
复制相似问题