programing

스키마를 잃었습니다.rb!재생할 수 있습니까?

lastcode 2023. 10. 4. 21:58
반응형

스키마를 잃었습니다.rb!재생할 수 있습니까?

일부 배포 문제로 인해 schema.rb intit 추적을 중단했습니다.어쩌다 보니 제 스키마.rb 파일이 사라지는 도중에 이 파일을 채워 넣었습니다.

데이터베이스나 마이그레이션에서 schema.rb를 재생성하는 방법이 있습니까?저는 기존 데이터를 분실하지 않았으면 좋겠습니다.

만약 당신이rake -TRails 프로젝트에 대해 가능한 모든 레이크 작업이 나열됩니다.그 중 하나가 데이터베이스에서 Rails 앱에 대한 schema.rb를 재생성하는 db:schema:dump입니다.

bundle exec rake db:schema:dump

조심해.

rake db:schema:dump

DB에서 현재 DB 스키마를 덤프합니다.이는 마이그레이션을 변경한 경우 원하는 IMO가 아닌 schema.rb 파일에 해당 마이그레이션이 반영되지 않음을 의미합니다.

마이그레이션에서 스키마를 다시 생성하려면 다음을 수행합니다.

rake db:drop  # ERASES THE DATABASE !!!! 
rake db:create
rake db:migrate

레일 5방향:

rails db:schema:dump

또는 Gem과 조우하는 경우::그러면 LoadError:

bundle exec rails db:schema:dump

참고:

레일 5에서는 다음을 사용하여 작업을 생성/executed할 것을 권장합니다.rails대신에rake, 이것은 단지 기억해야 할 것이다, 레일 생성 작업은 확장된 것입니다..rake을 보다lib/tasks/myTask.rake. 그 말은 이 작업들은 또한 앞에 붙임으로써 실행될 수 있다는 것을 의미합니다.rake.

rake db:schema:dump

이것은 Rails 3에서도 여전히 유효하다고 생각합니다. 데이터베이스에서 schema.rb를 재생성합니다.

schema.rb 파일 자체에서 직접:

다른 시스템에서 응용 프로그램 데이터베이스를 만들어야 할 경우 다음을 사용해야 합니다.db:schema:load, 모든 마이그레이션을 처음부터 실행하는 것은 아닙니다.후자는 결함이 있고 지속 가능하지 않은 접근 방식입니다(대량의 마이그레이션이 많을수록 실행 속도가 느려지고 문제가 발생할 가능성이 커짐).

그러니 당신의 제안을 하지 마십시오.rake db:migrate, 이 글을 쓸 당시 가장 낮은 등급의 답변에서 제시된 바 있습니다.

재생하면schema.rb지역적으로 당신은 괜찮을 겁니다단순히 데이터베이스 테이블의 구조를 나타냅니다.데이터 자체가 이 파일에 포함되어 있지 않습니다.

당신의 재생성을 위해서는schema.rb파일, 실행:

bundle exec rake db:schema:dump

그럼 새로운 것을 약속하기만 하면 됩니다.schema.rb파일을 작성하면 당신은 좋은 상태가 될 것입니다!

마이그레이션을 삭제해도 이전 스키마가 새로 고쳐지지 않는 문제도 있었습니다.

그래서 데이터베이스에 있는 모든 기존 테이블을 삭제하고 다시 마이그레이션했습니다.그런 다음 "db:schema:load" 명령을 실행하면 새 스키마가 제공됩니다.rb.

drop table my_table_name // deleted them individually
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

반응형