简体   繁体   English

[Django的] django.db.utils.IntegrityError

[英][Django]django.db.utils.IntegrityError

my app named mainsite 我的应用名为mainsite

I have the table class named Weather in models.py 我在models.py中有一个名为Weather的表类

class Weather(models.Model):
    tpr = models.CharField(max_length=5)
    wet = models.CharField(max_length=5)
    ur = models.CharField(max_length=5)
    li = models.CharField(max_length=5)
    observe_time = models.DateTimeField(default=None)

I don't want my observe_time set any deafult value 我不想我的observe_time设置任何默认值

So I set to None . 所以我设置为None。

I have made migrations. 我进行了迁移。

when I made migrate 当我进行迁移时

Then the traceback happen: 然后发生回溯:

File "manage.py", line 22, in execute_from_command_line(sys.argv) 在execute_from_command_line(sys.argv)中的文件“ manage.py”,第22行

File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\core\\management__init__.py", 文件“ C:\\ Users \\ User \\ Anaconda3 \\ lib \\ site-packages \\ django \\ core \\ management__init __。py”,

line 354, in execute_from_command_line 第354行,在execute_from_command_line中

 utility.execute() File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\core\\management\\__init__.py", 

line 346, in execute 执行中的第346行

 self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\core\\management\\base.py", 

line 394, in run_from_argv 第394行,位于run_from_argv中

 self.execute(*args, **cmd_options) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\core\\management\\base.py", 

line 445, in execute 第445行,在执行中

 output = self.handle(*args, **options) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\core\\management\\commands\\migrate.py", 

line 222, in handle 线222,在手柄中

 executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) File 

"C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\migrations\\executor.py", “C:\\用户\\用户\\ Anaconda3 \\ LIB \\站点包\\ Django的\\ DB \\迁移\\ executor.py”

line 110, in migrate 第110行,正在迁移

 self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial) File 

"C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\migrations\\executor.py", “C:\\用户\\用户\\ Anaconda3 \\ LIB \\站点包\\ Django的\\ DB \\迁移\\ executor.py”

line 148, in apply_migration 第148行,位于apply_migration中

 state = migration.apply(state, schema_editor) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\migrations\\migration.py", 

line 115, in apply 第115行,适用

 operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File 

"C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\migrations\\operations\\fields.py", “C:\\用户\\用户\\ Anaconda3 \\ LIB \\站点包\\ Django的\\ DB \\迁移\\ \\操作fields.py”

line 62, in database_forwards 第62行,在database_forwards中

 field, File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\sqlite3\\schema.py", 

line 179, in add_field 第179行,位于add_field中

 self._remake_table(model, create_fields=[field]) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\sqlite3\\schema.py", 

line 147, in _remake_table _remake_table中的第147行

 self.quote_name(model._meta.db_table), File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\base\\schema.py", 

line 111, in execute 执行中的第111行

 cursor.execute(sql, params) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\utils.py", 

line 79, in execute 第79行,执行

 return super(CursorDebugWrapper, self).execute(sql, params) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\utils.py", 

line 64, in execute 执行中的第64行

 return self.cursor.execute(sql, params) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\utils.py", line 

98, in exit 98,在出口

 six.reraise(dj_exc_type, dj_exc_value, traceback) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\utils\\six.py", line 

685, in reraise 685,加价中

 raise value.with_traceback(tb) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\utils.py", 

line 64, in execute 执行中的第64行

 return self.cursor.execute(sql, params) File "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\django\\db\\backends\\sqlite3\\base.py", 

line 318, in execute 执行中的第318行

 return Database.Cursor.execute(self, query, params) django.db.utils.IntegrityError: NOT NULL constraint failed: 

mainsite_weather__new.observe_time mainsite_weather__new.observe_time

I don't know what caused this error. 我不知道是什么原因导致此错误。

thx. 谢谢。

In order for this to work you should also make this field nullable and blankable, like this: 为了使它起作用,您还应该使该字段为可空和可空白,如下所示:

observe_time = models.DateTimeField(default=None, blank=True, null=True)

or omit default=None completely, like this: 或完全省略default=None ,如下所示:

observe_time = models.DateTimeField(blank=True, null=True)

Also, after that, don't forget to delete the previous migration file and run makemigrations and migrate again. 此外,此后,不要忘记删除以前的迁移文件并运行makemigrations并再次migrate

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM