Nice programing

Django에서 db를 재설정하는 방법은 무엇입니까?

nicepro 2020. 10. 6. 19:05
반응형

Django에서 db를 재설정하는 방법은 무엇입니까? '재설정'명령을 찾을 수 없음 오류가 발생합니다.


예제 tutotrial에 의한이 Django를 따르십시오 : http://lightbird.net/dbe/todo_list.html

튜토리얼은 다음과 같이 말합니다.

"이렇게하면 테이블 레이아웃이 변경되며 Django에게 테이블을 재설정하고 다시 생성하도록 요청해야합니다.

manage.py reset todo; manage.py syncdb"

그래도 실행 manage.py reset todo하면 오류가 발생합니다.

$ python manage.py reset todo                                       
- Unknown command: 'reset'

postgresql이 아닌 sqlite3를 사용하고 있기 때문입니까?

누군가 데이터베이스를 재설정하는 명령이 무엇인지 말해 줄 수 있습니까?

다음 명령 python manage.py sqlclear todo은 오류를 반환합니다.

$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?

그래서 settings.py의 INSTALLED_APPS에 'todo'를 추가하고 python manage.py sqlclear todo다시 실행 하여 다음 오류가 발생했습니다.

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined

resetflushDjango 1.5 로 대체되었습니다 . 다음을 참조하십시오.

python manage.py help flush

'플러시'답변이 일부 경우에는 작동하지만 모든 경우에는 작동하지 않는 것 같습니다. 데이터베이스의 값을 플러시 할뿐만 아니라 테이블을 올바르게 다시 만들어야했습니다. 아직 이전 (초기)을 사용하지 않기 때문에 모든 테이블을 삭제해야했습니다.

모든 테이블을 삭제하는 두 가지 방법은 모두 핵심 django 이외의 것이 필요합니다.

Heroku를 사용하는 경우 pg : reset으로 모든 테이블을 삭제합니다.

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

Django Extensions를 설치할 수 있다면 완전한 재설정을 수행하는 방법이 있습니다.

python ./manage.py reset_db --router=default

LisaD의 답변과 유사하게 Django Extensions 에는 "flush"처럼 테이블을 자르는 대신 모든 것을 완전히 삭제하는 멋진 reset_db 명령이 있습니다. 라우터를 지정해야하므로 다음과 같이 보일 수 있습니다.

python ./manage.py reset_db --router=default

단순히 테이블을 플러시한다고해서 객체를 삭제할 때 발생하는 지속적인 오류가 수정되지 않았습니다. reset_db를 수행하면 문제가 해결되었습니다.


Django 2.0을 사용하는 경우

python manage.py flush 

작동 할 것이다


django 1.11을 사용하면 migrations각 애플리케이션 폴더 에서 모든 마이그레이션 파일을 삭제하기 만하면 됩니다 (를 제외한 모든 파일 __init__.py). 그때

  1. 데이터베이스를 수동으로 삭제합니다.
  2. 수동으로 데이터베이스를 만듭니다.
  3. 을 실행 python3 manage.py makemigrations합니다.
  4. 을 실행 python3 manage.py migrate합니다.

그리고 짜잔, 데이터베이스가 완전히 재설정되었습니다.


전체 데이터베이스를 정리하려면 다음을 사용할 수 있습니다. python manage.py flush Django 앱의 데이터베이스 테이블을 정리하려면 다음을 사용할 수 있습니다. python manage.py migrate appname zero


나를 위해 이것은 문제를 해결했습니다.

heroku pg:reset DATABASE_URL

heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate

@LisaD의 답변에 대한 후속 조치 입니다.
2016 년 ( Django 1.9)부터 다음을 입력해야합니다.

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

This will give you a fresh new database within Heroku.


  1. Just manually delete you database. Ensure you create backup first (in my case db.sqlite3 is my database)

  2. Run this command manage.py migrate


python manage.py flush

deleted old db contents,

Don't forget to create new superuser:

python manage.py createsuperuser

참고URL : https://stackoverflow.com/questions/15454008/how-to-reset-db-in-django-i-get-a-command-reset-not-found-error

반응형