0

これまでデータベースを使用したことがないため、これはすべて新しいことです。私は RubyMine、Rails 3 で作業しています。

  • まず、移行とは何ですか? なぜ移行を行うのですか? データベースブラウザからデータベースを編集することはできませんか? 移行によってデータは保持されますか?
  • 次に、プロジェクトを継承しました。移行フォルダーには、20120128022506_users.rb のような名前のファイルが 3 つあります。移行タスクを実行すると、次のようになります。

SQLite3::SQLException: テーブル "projects" は既に存在します: CREATE TABLE "projects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "partner_id" integer, "name" varchar(255))

実際、 というファイルを見ると"20120531031320_projects.rb"、予想どおり、プロジェクト テーブルを作成しようとしています。

 def up
    create_table :projects do |table|
      table.integer :partner_id
      table.string :name
    end
    add_index :projects, :name
  end

このプロジェクトは Sinatra から移植されたもので、データベースと移行ファイルが同期していない可能性があります (用語が正しい場合)。とにかく、これらの移行ファイルとデータベースの間で物事を同期する方法はありますか?新しい移行ファイルを使用してデータベースに新しいテーブルを追加できますか?

4

1 に答える 1

1

「プロジェクト」がデータベースに存在するかどうかを確認するために、移行に条件を追加することでこれを解決しました。

  def up
    if (!ActiveRecord::Base.connection.tables.include?("projects"))
      create_table :projects do |table|
        table.integer :partner_id
        table.string :name
      end
    end
  end
于 2012-07-14T23:23:20.540 に答える