![](/img/trans.png)
[英]Why getting this error "django.db.utils.OperationalError: (1050, "Table 'someTable' already exists")"
[英]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 中刪除或更改它也不會反映在遷移部分中,因此它會引發已經存在的錯誤。 這是取自 的部分。
或者,如果您使用的是類 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.