3

Rails3-pre と最新の DataMapper を使用して、アプリを MySql から Postgresql に移行しようとしています。

:through => Resource を使用して多対多の関係で関連付けられたモデルがいくつかあります。これは、DataMapper が両方のモデルの外部キーを持つ結合テーブルを作成することを意味します。auto_migrate できません! 私はこれを取得し続けるため、これらの変更:

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 は依存関係を無視することを意味すると思いましたが、それは行を削除し、テーブルを削除しない場合にのみ適用されるのでしょうか?

db を一度 nuke した後に auto_migrate を実行できることを言及する必要がありますが、その後、エラーが発生します。

提案やアドバイスをいただければ幸いです。

編集: datamapper irc の Gibheer は、代わりに auto_upgrade を使用することを提案しました - テーブルを再作成しようとしません。

4

2 に答える 2

1

外部データとリレーションシップのインポートでも同様の問題が発生しましたDataMapper.finalize.auto_migrate!。データの挿入を開始する前に、誰かが試してみることを提案しました。それが役に立てば幸い

于 2010-07-10T09:54:28.410 に答える
0

まったく同じ問題がありましたが、auto_migrate または auto_upgrade では解決されませんでした。

多対多テーブルの自動的に選択された名前と同じ名前のモデルを作成し、テーブルを削除せずにモデル ファイルを削除したため、移行プロセス中に問題が発生したと思われます。

交差テーブルを手動で削除した後、問題なくデータを使用してすべての移行 (複数回のアップ/ダウン) を進めることができました。

于 2016-04-04T23:45:00.387 に答える