2

我正在尝试使用 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,我不明白为什么会出现关系错误。有任何想法吗?

4

3 回答 3

0

您在 MySQL 中的源数据是否干净?是否在您的 MySQL 数据库中检查了约束,您是否使用 InnoDB?

看起来您的开发数据库中可能有重复的条目。

于 2012-09-13T07:48:09.210 回答
0

该问题已在 valkyrie 中修复。这是来自valkyrie 来源的对该问题的解释:

mysql 索引命名空间是每个表,而不是每个数据库,因此在 mysql 到 postgresql 的迁移中,可能存在索引名称冲突。

解决方法也很详细:

此代码检查它是否来自mysql 数据库到 postgresql,如果是,请确保尝试创建第二个同名 idx 不会导致迁移失败,而只是将索引重命名为 prepend表名

请注意,gem install valkyrie不会安装“固定”版本。你必须从 github 获取最新的代码,这很好用。

于 2013-05-15T20:55:30.557 回答
0

你确定你的目标数据库是空的吗?该错误明确告诉您,该 user_id 字段在您尝试创建时已经存在。

于 2012-09-13T03:22:50.737 回答