0

私はRoRプロジェクトに取り組んでいます。ユーザーテーブルを移行しています。新しいdbaseの設定が異なり、ログイン用のものと個人用/設定用のものを分離したいので、dbaseをインポートしていません。すべての属性を個別に移行します。古いユーザーIDを保持したい。user = User.newを使用すると、user.id=migratee.user_idを実行できます。同じuser_idを保持します。残念ながら、古いテーブルでは、同じ電子メールアドレスで登録されたさまざまなユーザーがいます(理由は聞かないでください)。もちろん、私はそれを望まないので、user=User.newの代わりに行うのはuser=User.find_or_create_by_email(migratee.email)です。同じメールアドレスのユーザーは上書きされるので、これはいくつかの問題につながるでしょう。これは私が別に扱う問題です。私の問題は、user=Userの後にuser.id=migratee.user_idを実行するとです。find_or_create_by_email(migratee.email)古いIDは移行されませんが、新しい自動インクリメントIDが割り当てられます。誰かがそれを避ける方法を知っていますか?

よろしく、

ラトガー

4

2 に答える 2

1

クエリがどのように表示されるかわかりません。INSERT SELECTを実行している場合は、HAVINGを追加して、既存の電子メールアドレスをフィルタリングできます。それ以外の場合は、GROUPBY電子メールを実行して1つの電子メールのみを取得することができます。

于 2011-08-05T10:20:21.647 に答える
0

一度オフにした場合は、移行が完了するまで新しいmysqlテーブルID列のauto_incrementをオフにしてからオンに戻すか、新しいデータベーステーブルにudidという別の列を作成します(名前を変更して削除します)。 id col)。おそらくそれを行うためのより良い方法ですが、その高速で簡単です。

于 2011-08-07T02:48:32.637 に答える