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


98

예제 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

답변:


153

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

python manage.py help flush

4
불행히도 이것은 manage.py reset <appname>과 같은 개별 앱에서는 작동하지 않습니다. 오류가 발생합니다. CommandError : Command가 인수를 허용하지 않습니다
Andre


: 덕분에 좋은 최근 (마지막으로 수정 4 개월 전), '리셋'에 대해 여전히 (2019년 7월 11일) 협상기구에 대한 대중의 장고 문서 알고 code.djangoproject.com/wiki/Fixtures
vchrizz

34

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

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

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

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

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

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

6
@jonalv, 먼저 django-extensions 를 설치해야합니다 .
edjroot

6
또한, 당신은에 포함되어 있어야합니다 INSTALLED_APPS에서 settings.py.
Max Candocia

21

LisaD의 답변과 유사하게 Django Extensions 에는 "flush"처럼 테이블을 자르는 대신 모든 것을 완전히 삭제하는 멋진 reset_db 명령이 있습니다.

python ./manage.py reset_db

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


1
이것이 제가 찾던 것이지만, --router논쟁 을 할 필요가 없었습니다 . 아마도 5 년 후 지금은 선택 사항일까요? :)
damd aug

17

Django 2.0을 사용하는 경우

python manage.py flush 

작동 할 것이다


11

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


9

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

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

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


이 sqlite를 사용하는 경우, 필요가 수동으로 데이터베이스를 만들 수 없습니다, python3 manage.py makemigrations그리고 python3 manage.py migrate적어도 장고 2.0에서, 그 처리됩니다
toto_tico

4

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

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

3

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

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

이것은 Heroku 내에서 새로운 데이터베이스를 제공합니다.


1
  1. 수동으로 데이터베이스를 삭제하십시오. 먼저 백업을 생성했는지 확인하십시오 (내 경우 db.sqlite3 는 내 데이터베이스입니다)

  2. 이 명령 실행 manage.py migrate


1
python manage.py flush

오래된 db 콘텐츠를 삭제했습니다.

새 수퍼 유저를 만드는 것을 잊지 마십시오.

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