【发布时间】:2016-03-15 22:38:06
【问题描述】:
我正在尝试创建一个彩票应用程序,它一直运行良好,但是今天当我尝试执行 python manage.py migrate lotteryapp 时,它开始产生一个错误,指出
django.db.utils.OperationalError: (1060, "Duplicate column name 'email'")
所以我删除了电子邮件的所有引用,看看是否可以修复它,但它仍然给出错误。然后我一起删除了数据库并重新开始,但它给出了这个错误
ValueError: invalid literal for int() with base 10: ''
我已经进入了我的 models.py 文件并退出并再次运行该命令,它再次给出了重复列错误。这没有任何意义。这是我在 models.py 中的代码:
from django.db import models
from django.utils import timezone
from datetime import datetime
class Lottery(models.Model):
name = models.CharField(default="", max_length=50)
date_drawn = models.DateTimeField(default=datetime.now,blank=True)
win_amount = models.IntegerField(default=0)
winning_numbers = models.IntegerField(default="")
def __unicode__(self):
return self.name
class Winner(models.Model):
first_name = models.CharField(max_length=100, default="")
last_name = models.CharField(max_length=100, default="")
winner_telephone = models.IntegerField(max_length=15, default="")
lottery_numbers = models.IntegerField(default=0)
lottery_won = models.CharField(max_length=50, default="")
def __unicode__(self):
return self.name
class User(models.Model):
first_name = models.CharField(max_length=100, default="")
last_name = models.CharField(max_length=100, default="")
telephone = models.IntegerField(default="")
def __unicode__(self):
return self.first_name
class entered_user(models.Model):
first_name = models.CharField(max_length=100, default="")
last_name = models.CharField(max_length=100, default="")
telephone = models.IntegerField(default="")
lottery_numbers = models.IntegerField(default="")
def __unicode__(self):
return self.first_name
【问题讨论】:
-
我现在已经从 mysql 中的 enter_user 表中删除了 email 列(我不知道它为什么或如何在那里)并且我再次运行了迁移,现在我得到了 ValueError : 以 10 为基数的 int() 的无效文字:再次出现“错误”。此外,每当我执行 python manage.py makemigrations lotteryapp 时,它都会在数据库中的 enter_user 表中添加一个电子邮件列,尽管它们在 models.py 中没有引用电子邮件
-
我现在已经让它进入工作状态,但我没有找到问题的原因。我必须完全删除数据库和输入的用户模型以及删除所有迁移并重新启动它。
标签: python mysql sql django django-models