簡體   English   中英

Django _mysql.connection.query(self, query) django.db.utils.OperationalError: (1050, “表‘gaur’已經存在”)

[英]Django _mysql.connection.query(self, query) django.db.utils.OperationalError: (1050, "Table 'gaur' already exists")

我不想使用 Fake app migrate 選項來解決這個問題請建議任何其他方法

檢查我的代碼

模型 - 從 django.db 導入模型

from mptt.models import MPTTModel, TreeForeignKey

class Delhi(models.Model):
    account_id = models.IntegerField()
    type_code = models.CharField(max_length=200)
    sub_type_code = models.CharField(max_length=200)
    name = models.CharField(max_length=200)
    credit_amount = models.IntegerField()
    debit_amount = models.IntegerField()
    # parent = TreeForeignKey('self', null = True, related_name = 'strctr', on_delete = models.CASCADE)


    class Meta:
        managed = True
        db_table = 'gaur'

    def __str__(self):
        return self.type_code


class Ranchi(MPTTModel):
    node_name = models.CharField(max_length = 100)
    parent = TreeForeignKey('self', null = True, related_name = 'strctr', on_delete = models.CASCADE)


    def __str__(self):
        return self.name

序列化器 -

from rest_framework import serializers
from .models import Delhi, Ranchi

class DelhiSerializer(serializers.ModelSerializer):
    class Meta:
        model = Delhi
        fields = "__all__"

class RanchiSerializer(serializers.ModelSerializer):
    class Meta:
        model = Ranchi
        fields = "__all__"

看法 -

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import generics 
from rest_framework import status 



class CreateView(generics.ListCreateAPIView):                        
    """This class defines the create behavior of our rest api."""
    queryset = Delhi.objects.all()
    serializer_class = DelhiSerializer

    def perform_create(self, serializer):
        """Save the post data when creating a new bucketlist."""
        serializer.save()



class DetailsView(generics.RetrieveUpdateDestroyAPIView):             
    """This class handles the http GET, PUT and DELETE requests."""

    queryset = Delhi.objects.all()
    serializer_class = DelhiSerializer

數據庫名稱,如果你好,表名稱是模型中提到的“GAUR”。

我嘗試使用與 SQLite 配置相同的語法,它適用於 SQLite 但是當我想處理數據庫時它顯示給定的錯誤 -

python manage.py migrate 

錯誤是 -

Operations to perform:
  Apply all migrations: admin, app1, auth, contenttypes, sessions
Running migrations:
  Applying app1.0001_initial...Traceback (most recent call last):

. . . . . . _mysql.connection.query(self, query) django.db.utils.OperationalError: (1050, “表‘gaur’已經存在”)

python manage.py makemigrations 

請提出一個好的解決方案,因為我已經看到了所有類似錯誤的堆棧鏈接,但確實給了我想要的輸出。

虛擬環境名稱是 - myproject

我嘗試在不同的虛擬環境下制作不同的項目以防環境損壞,但它沒有用。

我什至嘗試過使用相同虛擬環境的不同位置,但結果是一樣的。

我遇到過這個問題,當時我摸不着頭腦然后我知道如果你只是刪除遷移並重試它會起作用,問題是當你直接在 models.py 中刪除或編輯某些東西並嘗試遷移它會引發這個問題已經存在的錯誤,這不是解決問題的方法,即使您直接在 models.py 中刪除或更改它也不會反映在遷移部分中,因此它會引發已經存在的錯誤。 這是取自 的部分

  1. 刪除項目中的所有遷移文件瀏覽每個項目的應用程序遷移文件夾並刪除其中的所有內容,除了init .py 文件。

或者,如果您使用的是類 unix 操作系統,則可以運行以下腳本(在您的項目目錄中):

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -deleteenter code here

而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM