데이터베이스를 재설정 (모두 제거) 한 다음 데이터베이스 시드


159

데이터베이스 테이블에서 데이터를 지우는 레이크 명령이 있습니까?

테이블에 데이터를 미리 채우려면 db : seed 스크립트를 어떻게 만듭니 까?

답변:



160

다음을 모두 사용하여 모든 것을 삭제하고 데이터베이스 + 시드를 다시 만들 수 있습니다.

  1. rake db:reset: schema.rb에서로드
  2. rake db:drop db:create db:migrate db:seed: 마이그레이션에서로드

db (rails server, sql client ..)에 연결되어 있지 않으면 db가 삭제되지 않아야합니다.

schema.rb는 다음에 의해 생성 된 데이터베이스의 현재 상태에 대한 스냅 샷입니다.

rake db:schema:dump

DB가 제대로 삭제되도록 사람들에게 서버를 끄도록 상기시켜 주셔서 감사합니다.
aardvarkk

6

데이터를 다시로드하기 위해 전체 shebang을 삭제하고 다시 작성하지 않으 려면 seed.db 파일에서 MyModel.destroy_all(또는 delete_all)를 사용 하여 MyModel.create!(...)명령문이 데이터를로드 하기 전에 테이블을 정리할 수 있습니다. 그런 다음 반복해서 db:seed작업을 다시 실행할 수 있습니다 . (이것은 나머지 데이터가 아닌 데이터를로드 한 테이블에만 영향을줍니다.)

https://stackoverflow.com/a/14957893/4553442 에 "더러운 해킹 (dirty hack)"이있어 위아래로 마이그레이션하는 것과 유사한 "시드 해제"작업을 추가합니다.


영리하고, 처음부터 모든 것을 처음부터 다시
만드는

5

레일 5로, rake명령 행 도구는 별칭으로되어 rails이제

rails db:reset 대신에 rake db:reset

잘 작동합니다


0

rake db:reset로컬 데이터베이스를 삭제하고에서로드 된 데이터로 새로 시작하려는 경우에 사용할 수 있습니다 db/seeds.rb. 이것은 여전히 ​​스키마를 파악하고 기존 모델에 필드를 추가해야 할 때 유용한 명령입니다.

reset 명령이 사용되면 다음을 수행합니다. 데이터베이스를 삭제하십시오. rake db:drop 스키마를로드하십시오. rake db:schema:load 데이터를 시드하십시오.rake db:seed

그러나 데이터베이스를 완전히 삭제하려면을 사용할 수 있습니다 rake db:drop. 데이터베이스를 삭제하면 스키마 충돌이나 잘못된 데이터도 제거됩니다. 보유한 데이터를 유지하려면이 명령을 실행하기 전에 백업하십시오.

가장 중요한 레이크 데이터베이스 명령 에 대한 자세한 기사 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.