Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django迁移产生奇怪的错误_Python_Mysql_Sql_Django_Django Models - Fatal编程技术网

Python Django迁移产生奇怪的错误

Python Django迁移产生奇怪的错误,python,mysql,sql,django,django-models,Python,Mysql,Sql,Django,Django Models,我正在尝试创建一个彩票应用程序,它一直运行良好,但今天当我尝试使用python manage.py migrate lotteryapp时,它开始产生一个错误 django.db.utils.OperationalError: (1060, "Duplicate column name 'email'") 因此,我删除了所有的电子邮件参考,看看这是否能解决它,但它仍然给出了错误。然后我一起删除了数据库,并重新开始,但它给出了这个错误 ValueError: invalid literal fo

我正在尝试创建一个彩票应用程序,它一直运行良好,但今天当我尝试使用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

问题在于字段
彩票中奖
彩票号码
。将默认值更改为0,然后重试

  • IntegerField不能具有默认值字符串类型,也没有属性max\u length

    • winning_numbers=models.IntegerField(默认值=)
    • winner\u telephone=models.IntegerField(最大长度=15,默认值=)
    • 电话=型号。整型字段(默认值=)
    • 彩票号码=models.IntegerField(默认值=)
  • 避免呼叫模型用户,因为这可能会导致与默认django用户模型冲突,这可能是电子邮件错误消息的原因

  • @CNB我尝试了以下代码,我只是将用户更改为UserModel,迁移工作正常:

    from __future__ import unicode_literals
    from django.db import models
    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=0)
       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(default="")
        lottery_numbers = models.IntegerField(default=0)
        lottery_won = models.CharField(max_length=50, default="")
        def __unicode__(self):
            return self.name
    
    class UserModel(models.Model):
        first_name = models.CharField(max_length=100, default="")
        last_name = models.CharField(max_length=100, default="")
        telephone = models.IntegerField(default=0)
        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=0)
        lottery_numbers = models.IntegerField(default=0)
        def __unicode__(self):
            return self.first_name
    

    现在,我已经从mysql中输入的_user表中删除了列email(我不知道它在其中的原因或方式),并且我再次运行了迁移,现在我得到了ValueError:invalid literal for int(),以10为基数:“”错误。此外,每当我执行python manage.py makemigrations lotteryapp时,它都会将一个电子邮件列添加到数据库中输入的_user表中,尽管它们在models.py中没有引用电子邮件。我现在已经使其处于工作状态,但我没有找到问题的原因。我必须完全删除数据库和输入的用户模型,并删除所有迁移,然后重新启动。我现在删除了default=”“to be default=0,用户现在是彩票用户,但我仍然有同样的问题。这很烦人,因为我运行了migrate,得到了无效的文本错误,然后再次运行,得到了重复的列错误。我的模型文件中没有电子邮件,它是如何添加的?!正如我所提到的,尝试通过Profile或任何其他名称更改用户模型,因为我认为它与django默认用户模型有冲突,django默认用户模型有一个email字段。删除您的数据库,然后重试。我在前面的评论中提到,我已经这样做了,并且我已经删除了数据库以检查我刚才共享的代码片段。我现在已经修复了它,我认为我的数据库和迁移有问题,所以我删除了这两个并重新启动了数据库。感谢您的帮助您是否更改了中奖号码、中奖电话、电话和相关字段。如果我们尝试将字符串转换为整数,则会出现以下问题:“ValueError:以10为基数的int()的文本无效:“”。如果创建了任何迁移,请删除并重试我现在已经修复了它,我认为我的数据库和迁移存在问题,因此我将两者都删除并重新启动数据库。谢谢你的帮助