2012-07-14 1 views
0

이전에 db로 작업 한 적이 없으므로이 모든 것이 저에게 새로운 것입니다. 저는 RubyMine, Rails 3에서 일하고 있습니다.레일 3 마이그레이션 오류 : SQLite3 :: SQLException : "myTable"테이블이 이미 있습니다.

  • 먼저, 마이그레이션은 무엇이며, 그 이유는 무엇입니까? 데이터베이스 브라우저를 통해 db를 편집 할 수 있습니까? 마이그레이션이 데이터 등을 보유합니까?
  • 둘째, 프로젝트를 상속했으며 마이그레이션 폴더에 20120128022506_users.rb와 같은 이름의 파일이 3 개 있습니다. 난 그냥 마이그레이션 작업을 실행하면, 내가 얻을 :

    def up 
        create_table :projects do |table| 
         table.integer :partner_id 
         table.string :name 
        end 
        add_index :projects, :name 
        end 
    
    : 예상대로 "20120531031320_projects.rb"라는 파일에 보면

SQLite3::SQLException: table "projects" already exists: CREATE TABLE "projects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "partner_id" integer, "name" varchar(255))

그리고 사실는, 프로젝트 테이블을 만들려고

이 프로젝트는 Sinatra에서 이식되었으며 db와 마이그레이션 파일이 동기화되지 않았을 수도 있습니다 (올바른 용어 인 경우). 어쨌든, 이러한 마이그레이션 파일과 db간에 동기화 할 수있는 방법이 있습니까? 그러면 새 마이그레이션 파일을 사용하여 db에 새 테이블을 추가 할 수 있습니까? - http://guides.rubyonrails.org/

def up 
    if (!ActiveRecord::Base.connection.tables.include?("projects")) 
     create_table :projects do |table| 
     table.integer :partner_id 
     table.string :name 
     end 
    end 
    end 
+1

이 시작하기에 좋은 장소가 아마 : – house9

+0

또한 레일스는 생성 된 schema_migrations 테이블에서 어떤 마이그레이션이 실행되었는지 추적합니다. – house9

+0

감사합니다 house9, 저에게 잡았습니다! – dt1000

답변

1

나는 "프로젝트"DB에 존재하는지 마이그레이션에 조건을 넣어이 문제를 해결 migrations.html
+0

이 문제가 발생하면이 방법을 사용하는 것이 좋습니다. 나중에 엉덩이에 물린다면 확실하지 않습니다. – andy4thehuynh