2017-06-08 36 views
0

models.pydjango.core.exceptions.ValidationError:[U「'價值有一個無效

# -*- coding:utf-8 -*- 
    from __future__ import unicode_literals 
    from django.db import models 
    # Create your models here. 

    class moption(models.Model): 

     pub_date = models.DateTimeField('pub time', auto_now_add=True, editable=True) 

當我的命令 」蟒蛇manage.py遷移「

Operations to perform: 
    Apply all migrations: Price, admin, auth, contenttypes, sessions 
Running migrations: 
    Applying Price.0006_moption_pub_date...Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 345, in execute 
    output = self.handle(*args, **options) 
    File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle 
    fake_initial=fake_initial, 
    File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate 
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 
    File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards 
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
    File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration 
    state = migration.apply(state, schema_editor) 
    File "C:\Python27\lib\site-packages\django\db\migrations\migration.py", line 129, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
    File "C:\Python27\lib\site-packages\django\db\migrations\operations\fields.py", line 84, in database_forwards 
    field, 
    File "C:\Python27\lib\site-packages\django\db\backends\mysql\schema.py", line 43, in add_field 
    super(DatabaseSchemaEditor, self).add_field(model, field) 
    File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 395, in add_field 
    definition, params = self.column_sql(model, field, include_default=True) 
    File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 147, in column_sql 
    default_value = self.effective_default(field) 
    File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 221, in effective_default 
    default = field.get_db_prep_save(default, self.connection) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 755, in get_db_prep_save 
    prepared=False) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 1440, in get_db_prep_value 
    value = self.get_prep_value(value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 1419, in get_prep_value 
    value = super(DateTimeField, self).get_prep_value(value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 1275, in get_prep_value 
    return self.to_python(value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 1403, in to_python 
    params={'value': value}, 
django.core.exceptions.ValidationError: [u"'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 

誰可以告訴我,謝謝,

+0

您的代碼似乎是正確的。你可以在這裏發佈你的遷移文件嗎?可能存在遷移代碼一些問題 –

回答

0

pub_date取出editable=True

pub_date = models.DateTimeField(auto_now_add=True) 

嘗試清除所有的遷移和重建數據庫,

如果您正在使用的SQLite3,然後運行,

rm -r Price/migrations #Assume Price is your app_name 
rm -rf db.sqlite3 

python manage.py makemigrations 
python manage.py migrate 
+0

我只是嘗試將其刪除,但同樣的錯誤 –

+0

你刪除它,跑'蟒蛇manage.py makemigrations Price'然後,'蟒蛇manage.py migrate' – zaidfazil

+0

當然,當我跑蟒蛇manager.py makemigrations,打印沒有變化來檢測,那麼Python manage.py遷移,打印同樣的錯誤 –

0

看來遷移文件沒有正確地在你的數據庫表結構匹配。

  1. 如果你是好與您的所有DB數據沖洗,你可以試試這個方法,

刪除你的數據庫文件(帶備份,如果你想)

從刪除您的遷移文件夾每個應用程序

創建新的遷移,遷移它們。

現在,你有一個新的數據庫文件與你的新表結構。

  • 如果你沒有好的與所有DB數據沖洗,你可以試試這個方法,
  • 使用SQLite控制檯

    刪除您django_migrations表中的所有條目

    創建新的遷移

    遷移它們

    現在,你必須與你的新表結構的新的數據庫文件。

    0

    刪除所有的遷移,刪除您的數據庫是相當extrement建議,我會建議你反對。實際上,不會執行這些中的任何一個,除非您有完整的數據備份,並且您的遷移處於版本控制中。

    好了,現在讓我們來看看簽名DateTimeField

    class DateTimeField(auto_now=False, auto_now_add=False, **options)

    而且您的使用情況

    pub_date = models.DateTimeField('pub time', auto_now_add=True, editable=True) 
    

    這是什麼 '的酒吧時間'?無論如何,這會導致創建錯誤的遷移。

    修復代碼後,查看數據庫,查看django_migrations表格內部,並查找此應用程序最近一次應用的遷移編號。您的遷移文件夾中任何數量較多的文件夾都是未應用的遷移文件。只刪除未應用的遷移。然後刪除dame文件夾中的'* .pyc'文件。現在做

    ./manage.py makemigrations 
    ./manage.py migrate 
    
    相關問題