2013-05-26 1 views
20

안녕하세요 메신저는 현재 레일을 배우고 설명서를 따르고 있습니다. 지침은 응용 프로그램을 만든 다음 마이그레이션 파일을 편집 한 다음 rake db : migrate를 실행 한 다음 rake db : create를 실행하는 것입니다.rails에 새로오고 db를 설정 한 다음 rake db를 실행하십시오 : create/migrate

내가 여기에 마이그레이션 파일을 편집 한

: 내가 실행 한 다음

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :email 
     t.string :encrypted_password 
     t.string :salt 
     t.timestamps 
    end 
    end 
end 

: 내가하기로되어있어 이후에 내가 오류

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` ... 

있어 '레이크 DB 마이그레이션' 실행 : 다음, '레이크 DB 생성'이

user_auth_development already exists 
user_auth_test already exists 
+0

내가 DB를 실행해야 할 마이그레이션에 필요한 모든 레이크 작업을 할 것인가? 또는 일단 마이그레이션 파일을 편집하면이 alreay 설정입니까? –

+0

테이블이 이미 있음을 의미합니다. 이미 이전 마이그레이션이 이미 생성되었을 수 있습니다. –

답변

43

당신은 한 번만 rake db:create을 실행 점점 메신저, 당신은 그것을 전나무를 실행 티. 그런 다음 마이 그 레이션을 추가/변경할 때마다 rake db:migrate을 실행합니다. 이미이 마이그레이션을 실행했거나 이미 존재하는 데이터베이스를 가리키고 있으며 이미 users이라는 테이블이 있습니다. 제 생각에 이미 마이그레이션을 실행 한 적이 있습니다.이 경우 마이그레이션하는 것이 좋습니다. DB를 핵으로 만들고 처음부터 다시 시작하려면 rake db:drop db:create db:migrate을 수행하십시오. 생성 및 DB : 이전

+0

감사합니다! 이것은 그것을 해결했다. –

+0

정말 고마워! 왜 그들이 가이드에서 이것을 다루지 않는지 나는 모른다. 또한 마이그레이션을 올바르게 업데이트하는 방법을 정확하게 설명하지도 않습니다. 마이그레이션 파일을 업데이트하고'rake db : migrate'를 실행하면 아무 일도 일어나지 않습니다. 내가 잘못하고있는 것을 알고 있지만, 내가 무엇을해야하는지 모른다. 마이그레이션에 새로운 이름이나 다른 것을 부여해야합니까? – Nathan

+0

일반적으로 마이그레이션 파일을 수정하면 안됩니다. 자신이하는 일을 정말로 알고 있다면, 언제 받아 들일 수 있는지 알 수 있습니다. 의심스러운 점이 있으면 수정하지 마십시오. 대신 새로운 마이그레이션 파일을 만드십시오 ('rails generate migration'). 이것에 대한 하나의 사소한 예외가 있습니다. 가장 최근의 마이그레이션을 수정하려면 그렇게 할 수 있고,'rake db : migrate : redo'를 실행하면 마지막 마이그레이션을 삭제하고 다시 실행합니다. 항상 가능한 것은 아닙니다. 모든 이주가 되돌릴 수있는 마지막 이주에 달려 있습니다. 공유 저장소에 이미 커밋 한 경우에는이 작업을 수행하지 않아야합니다. –

15
우리는 간단하게 줄 수

, 그것은 데이터베이스 생성 및

rake db:setup

+0

이것은 나를 위해 작동하지 않았다 ... 그것은 스키마 파일이 아직 존재하지 않는다고 말합니다 ... –

+0

그 간단한 정보를 꽤 많이 찾고 있었는데 ... 쉽게 발견 하기엔 너무 사소했습니다. 모델로부터 데이터베이스를 생성합니다. – nembleton

관련 문제