2

次のようにvalkyrieを使用して、ローカルmysqlデータベースをherokupostgresデータベースにプッシュしようとしています。

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

宛先データベースが空であってもよろしいですか?このエラーは、user_idフィールドを作成しようとしているときに、そのフィールドがすでに存在していることを明示的に示しています。

于 2012-09-13T03:22:50.737 に答える
0

この問題はvalkyrieで修正されました。valkyrieソースからの問題の説明は次のとおりです。

mysqlインデックスの名前空間は、データベースごとではなくテーブルごとであるため、mysqlからpostgresqlへの移行で、インデックス名の競合が発生する可能性があります。

解決策も詳しく説明されています。

このコードは、それがmysqlデータベースからpostgresqlに由来するかどうかを確認し、そうであれば、同じ名前の2番目のidxを作成しようとしても移行が失敗しないことを確認しますが、インデックスの名前を変更して先頭に追加します。テーブル名

gem install valkyrie'fixed'バージョンはインストールされないことに注意してください。githubから最新のコードを入手する必要があります。これはうまく機能します。

于 2013-05-15T20:55:30.557 に答える