programing

장고: 테이블이 존재하지 않습니다.

i4 2023. 7. 25. 20:27
반응형

장고: 테이블이 존재하지 않습니다.

앱과 관련된 테이블을 떨어뜨리고 syncdb 명령을 다시 시도했습니다.

python manage.py syncdb

다음과 같은 오류가 표시됩니다.

django.db.utils.ProgrammingError: (1146, "Table 'someapp.feed' doesn't exist")

models.py

class feed(models.Model):
    user = models.ForeignKey(User,null=True,blank=True)
    feed_text = models.CharField(max_length=2000)
    date = models.CharField(max_length=30)
    upvote = models.IntegerField(default=0)
    downvote = models.IntegerField(default=0)

    def __str__(self):
        return feed.content

그 앱에 대한 테이블을 얻으려면 어떻게 해야 합니까?

  1. 테이블을 삭제합니다(이미 삭제했습니다).
  2. model.py 의 모델에 대한 의견을 제시합니다.
  3. 그리고..

django 버전 >= 1.7인 경우:

python manage.py makemigrations
python manage.py migrate --fake

또 다른

python manage.py schemamigration someapp --auto
python manage.py migrate someapp --fake
  1. models.py 에서 모델에 대한 의견을 제시합니다.
  2. 3단계로 이동합니다. 하지만 이번에는 --가짜가 없습니다.

(나처럼) 여전히 문제가 있을 수 있는 사람들을 위해 다음을 시도해 보십시오.

의 메인을모 URL댓에 있는 댓글로 .urls.py

그런 다음 마이그레이션을 실행합니다.

$ ./manage.py makemigrations
$ ./manage.py migrate

문제는 다음을 제거함으로써 완화되었습니다.()

    solved_time = models.DateTimeField('solved time', default=timezone.now())

로.

    solved_time = models.DateTimeField('solved time', default=timezone.now)

저는 레딧으로부터 이 답변을 받았습니다.

관리할 때 내 문제를 해결한 것.pyset 마이그레이션 후 SQL 데이터베이스로 마이그레이션이 제대로 작동하지 않습니다. 다음 작업을 수행했습니다.

  1. 명령: 실행 령명:python manage.py migrate --fake MyApp zero
  2. 그후:python manage.py migrate MyApp

그리고 connections.py 에서 발생한 문제와 마이그레이션 명령어가 올바르게 실행된 후에 해결됩니다!적어도 나한테는.

저는 Python(3.x), MySQL DB, Django(3.x)를 사용하고 있으며, connections.py 관련 오류로 인해 데이터베이스에 테이블을 성공적으로 작성한 후 필요한 상황에 놓였습니다.하지만 위의 명령이 도움이 되었습니다. 저는 그들이 이런 종류의 문제를 겪고 있는 모든 사람들을 도와주기를 바랍니다.

방금 애플리케이션 이름을 첨부하여 프로비저닝하고 작동하는 모든 애플리케이션에 대해 마이그레이션을 실행했습니다.

python3 manage.py makemigrations my_custom_app

그들 모두를 위해 출마한 후, 저는 거래를 성사시키기 위해 마이그레이션 명령을 실행했습니다.python3 manage.py migrate다였어요..그게 다였어요.그런데도 장고가 가끔 이런 행동을 하는 이유가 궁금합니다.

위의 해결책 중 어떤 것도 나에게 효과가 없었습니다, 나는 마침내 해결했습니다.

sudo systemctl stop mysql.service

sudo apt-get purge mysql-server

sudo apt-get install mysql-server

sudo systemctl stop mysql.service

제 경우, 제가 뽑은 코드는 = False를 관리했고 저는 장고가 테이블을 관리하기를 원했습니다.

그러나 마이그레이션을 수행했을 때 사용자 지정 테이블이 검색되지 않거나 app_name 오류가 발생했습니다.Table_name이(가) 존재하지 않습니다.

다음을 시도했습니다.

  1. 마이그레이션 폴더 내의 모든 마이그레이션 파일(init.py 파일 제외)을 삭제한 다음 마이그레이션을 수행한 다음 최종 마이그레이션
  2. 위의 2개의 답변
  3. 이것.

PS: mysql을 삭제하면 데이터가 손실되므로 백업이 있거나 데이터가 중요하지 않거나 테이블 생성을 시작한 지 얼마 되지 않은 경우에만 이 솔루션을 사용할 수 있습니다.

이것은 프로젝트 내부의 스크립트에 있는 마이그레이션 데이터와 연결되어 있습니다. 데이터베이스의 마이그레이션 스크립트와 일치하지 않습니다.저는 다음 단계를 통해 이 문제를 해결했습니다.

  1. 를 제외한 스크립트를 삭제__ini__
  2. .py 데이터베이스 및의 되어 있는지 합니다.py 에 데이터베이스의 테이블과 동일한 구조가 포함되어 있는지 확인합니다.managed=True
  3. auth_user 등과 같은 모든 Django 생성 테이블 제거
  4. 다음 코드 실행
$ ./manage.py makemigrations
$ ./manage.py migrate

이렇게 하면 마이그레이션 스크립트가 다시 생성되고 데이터베이스에 적용됩니다.

운영과 개발에서 동일한 데이터베이스 구조를 사용하는 문제가 있었습니다.될 수 하고 데이터베이스를 .model사실은 맞습니다.제가 직접 개발 데이터베이스를 잘못 작성했는데, 제작 과정에서 테이블의 첫 글자가 대문자로 표시되어 있었습니다.사용했습니다.python manage.py inspectdbdb에서 하고, 를 운영데이명실비행교다니습했고하와 했습니다.model그리고 모델에서 예를 들어 '테스트'가 아닌 '테스트' 테이블에 데이터를 삽입하려고 한다는 것을 깨달았습니다.그것이 미래에 여러분 중 일부에게 도움이 되기를 바랍니다.

저도 비슷한 문제가 있었습니다.

DB에 액세스해야 하는 다른 파이썬(클래스 포함) 파일이 있었습니다.

어떤 이유로 'make migrations'를 실행할 때 이 파일이 처리되었습니다(일부 가져오기 체인에 연결되어 있음).

이 수업에서, 나는 기본 인수를 포함하는 메서드를 가지고 있었습니다.method(defaultModel=Model.get_default())DB의 기본 객체에 액세스하는 시그니처(모델 클래스에 포함된 정적 메서드).

가져오기 시간에 이 기본 인수가 평가되었으며 테이블이 아직 채워지지 않았기 때문에 이 오류가 표시됩니다.

그래서 저는 그냥.None기본 변수의 경우 메서드 내부의 기본 모델 개체를 요청합니다.이것으로 문제가 해결되었습니다.

이전에 앱에서 마이그레이션 폴더를 실수로 삭제했을 때도 같은 문제에 직면했습니다.수동으로 실행하여 수정할 수 있었습니다.makemigrations특정 앱용입니다.

Windows에 대한 수정 사항은 다음과 같습니다.

py manage.py makemigrations <your_app_name>

py manage.py migrate

에는 OS를 교체해야 합니다.py와 함께python3또는python

이것이 당신의 문제를 해결하는 데 도움이 되었기를 바랍니다!

저는 같은 문제에 직면해야 하고 몇 가지 접근법이 있지만, 제가 생각하는 것이 가장 가능성이 높다고 생각합니다.

보기 또는 쿼리를 데이터베이스에 로드하는 중이지만 Django가 모델을 DB로 마이그레이션할 수 있는 충분한 시간을 부여하지 않은 것입니다.그것이 "테이블이 존재하지 않는" 이유입니다.

보기 코드에서 다음과 같은 초기화를 사용해야 합니다.

클래스 등록 양식(양식).양식):

  def __init__(self, *args, **kwargs):
    super(RegisterForm, self).__init__(*args, **kwargs)

두 번째 방법은 이전 마이그레이션을 정리하고 데이터베이스를 삭제한 후 마이그레이션 프로세스를 다시 시작하는 것입니다.

저는 위의 모든 속임수를 시도했지만 결코 저를 위해 일하지 않았습니다.특정 테이블을 호출하는 모든 가져오기 및 URL에 대해 설명했습니다.

이 솔루션에서는 데이터가 제거됩니다.저는 앱을 제거하고 다시 앱을 만들었습니다.앱 폴더를 어딘가에 복사해서 프로젝트에서 앱 폴더를 삭제했습니다.저는 urls.py 의 모든 라인과 views.py 및 관리자와 유사한 파일에 대해 의견을 제시했습니다.이 앱을 사용하는 py. 또한 settings.py 에 있는 앱 이름.

mysql에서:

truncate django_migrations;
truncate django_admin_log;

앱의 모든 모델에 대해 이 작업을 수행하고 n.n을 변경합니다.

delete from auth_permission where content_type_id=n
delete from django_content_type where app_label='appname'

python manage.py startapp your_app_name

그런 다음 이전 줄의 주석을 제거하고 파일을 복원하고 실행합니다.

python manage.py makemigrations
python manage.pt migrate

저도 같은 문제에 직면했습니다. 위에서 언급한 답변 중 일부는 저에게 적합하지 않은 것 같습니다. 하지만 여기 간단한 4단계 솔루션이 있습니다.

    1) Delete the migrations files below __init__.py (don't delete __init__.py) in your specific app.
    2) python manage.py makemigrations AppName
    3) python manage.py migrate --fake AppName zero
    4) python manage.py migrate AppName

이것들이 당신에게 효과가 있기를 바랍니다.

파이썬이 그럭저럭 해낸다면요.파이 마이그레이션은 여전히 작동하지 않습니다. 제 말은 당신이 이것을 할 때 아무것도 하지 않는다는 것입니다. 그 후에 django_migrations 테이블에서 앱의 마이그레이션을 삭제할 수 있습니다.

python manage.py migrate

언급URL : https://stackoverflow.com/questions/27583744/django-table-doesnt-exist

반응형