schema.rb를 잃어 버렸습니다! 재생성 할 수 있습니까?
일부 배포 문제로 인해 git에서 schema.rb 추적을 중지했습니다. 어쨌든 나는 이것을 schema.rb 파일이 사라지는 방식으로 채워 넣었습니다.
데이터베이스 또는 마이그레이션에서 schema.rb를 재생성하는 방법이 있습니까? 기존 데이터를 잃지 않기를 원합니다.
실행하면 rake -T
Rails 프로젝트에 가능한 모든 레이크 작업이 나열됩니다. 그중 하나가 db : schema : dump 이며 데이터베이스에서 Rails 앱의 schema.rb를 다시 만듭니다.
bundle exec rake db:schema:dump
꼼꼼한,
rake db:schema:dump
현재 DB 스키마 덤프 DB를 FROM을 . 이는 마이그레이션을 변경 한 경우 IMO가 아닌 schema.rb 파일에 반영 되지 않음을 의미 합니다.
마이그레이션에서 스키마를 다시 작성하려면 다음을 수행하십시오.
rake db:drop # ERASES THE DATABASE !!!!
rake db:create
rake db:migrate
rake db:schema:dump
이것이 여전히 Rails 3에서 유효하다고 생각합니다-데이터베이스에서 schema.rb를 재생성합니다.
레일즈 5 웨이 :
rails db:schema:dump
또는 Gem :: LoadError가 발생하면 :
bundle exec rails db:schema:dump
노트 :
rails 5에서 rails
대신에 를 사용하여 작업을 생성 / 실행하는 것이 좋습니다 rake
. 이것은 단지 Rails 생성 된 작업이에서 확장 된 것을 기억하기위한 것 .rake
입니다 lib/tasks/myTask.rake
. 이 작업은 앞에 추가하여 실행할 수도 있습니다 rake
.
schema.rb
로컬로 재생성 하면 괜찮을 것입니다. 단순히 데이터베이스 테이블의 구조를 나타냅니다. 데이터 자체는이 파일에 포함되어 있지 않습니다.
schema.rb
파일 을 재생성하려면 다음을 실행하십시오.
bundle exec rake db:schema:dump
그런 다음 새 schema.rb
파일을 커밋하면 상태 가 좋아야합니다!
schema.rb 파일 자체에서 직접 :
다른 시스템에서 애플리케이션 데이터베이스를 작성해야하는 경우
db:schema:load
모든 마이그레이션을 처음부터 실행하지 않고을 사용해야합니다 . 후자는 결함이 있고 지속 불가능한 접근 방식입니다 (이주가 많을수록 더 느리게 실행되며 문제가 발생할 가능성이 커짐).
따라서이 rake db:migrate
글을 쓰는 시점에서 최저 등급의 답변으로 제안 된 의 제안을하지 마십시오 .
또한 마이그레이션을 삭제해도 이전 스키마가 새로 고쳐지지 않는 비슷한 문제가있었습니다.
그래서 내가 한 것은 데이터베이스의 기존 테이블을 모두 삭제하고 다시 마이그레이션하는 것이 었습니다. 그런 다음 "db : schema : load"명령을 실행하면 새로운 schema.rb가 나옵니다.
drop table my_table_name // deleted them indivisully
rake db:migrate
rake db:schema:dump // re-created a new schema
참고 URL : https://stackoverflow.com/questions/9731585/lost-my-schema-rb-can-it-be-regenerated
'programing tip' 카테고리의 다른 글
ASP.NET 세션 쿠키에서 보안 플래그를 설정하는 방법 (0) | 2020.07.04 |
---|---|
자바 스크립트에서 변수 유형 찾기 (0) | 2020.07.04 |
Java Runtime.getRuntime () : 명령 행 프로그램 실행에서 출력 얻기 (0) | 2020.07.04 |
안드로이드 SDK 위치 (0) | 2020.07.04 |
단위 테스트를 작성할 때 무엇을 테스트해야하는지 어떻게 알 수 있습니까? (0) | 2020.07.04 |