2015-11-21 13 views
5

मैं अपने सरल प्रोजेक्ट में django-पंजीकरण का उपयोग करने की कोशिश कर रहा हूं।django-पंजीकरण (1048, "कॉलम 'last_login' शून्य नहीं हो सकता है")

settings.py

# DJANGO REGISTRATION 
ACCOUNT_ACTIVATION_DAYS = 7 
AUTH_USER_EMAIL_UNIQUE = True 
EMAIL_HOST = 'localhost' 
EMAIL_PORT = 1025 
EMAIL_HOST_USER = '' 
EMAIL_HOST_PASSWORD = '' 
EMAIL_USE_TLS = False 
DEFAULT_FROM_EMAIL = '[email protected]' 

urls.py

url(r'^accounts/', include('registration.backends.hmac.urls')), 

पंजीकरण टेम्पलेट:

:

{% extends "index.html" %} 
{% block content %} 
<h1>Registration</h1> 
<form method="post" action=""> 
    {% csrf_token %} 
    <dl class="register"> 
    {% for field in form %} 
     <dt>{{ field.label_tag }}</dt> 
     <dd class="clearfix">{{ field }} 
     {% if field.help_text %}<div class="clearfix">{{ field.help_text }}</div>{% endif %} 
     {% if field.errors %}<div class="myerrors clearfix">{{ field.errors }}</div>{% endif %} 
     </dd> 
    {% endfor %} 
    </dl> 
<input type="submit" value="Sign Up" class="clearfix"> 
</form> 
{% endblock %} 

जब मैं नया उपयोगकर्ता रजिस्टर करने के लिए जा रहा है, मैं कोई त्रुटि मिलती है

Django Version:  1.9c1 
Exception Type:  IntegrityError 
Exception Value: (1048, "Column 'last_login' cannot be null") 

मैं 'कस्टम यूज़र' मॉडल का उपयोग नहीं करता हूं।

+0

संबंधित प्रश्न (शायद एक डुप्लिकेट): [Django 1.6 (दक्षिण के साथ) से 1.8 तक अपग्रेड करने से उपयोगकर्ता तालिका पर 'last_login' को संशोधित नहीं किया जाता है] (http://stackoverflow.com/questions/29913612/upgrading-from -django-1-6-with-south-to-1-8-doesnt-modified-last-login-on-the) –

+0

@ कोशिश-अंत-अंत में यह प्रश्न थोड़ा अलग है, क्योंकि उस उपयोगकर्ता के पास एक कस्टम उपयोगकर्ता था आदर्श। – Alasdair

उत्तर

9

सुनिश्चित करें कि आपने ऑथ ऐप के लिए सभी माइग्रेशन चलाए हैं। माइग्रेशन 0005_alter_user_last_login_null.py है जो last_login फ़ील्ड वैकल्पिक बनाता है।

+0

मैंने एथ ऐप में कुछ भी नहीं बदला है। –

+0

** प्रदर्शन करने के लिए संचालन: ** सभी माइग्रेशन लागू करें: व्यवस्थापक, सामग्री प्रकार, zeezmem, auth, सत्र ** माइग्रेशन चलाना: ** लागू करने के लिए कोई माइग्रेशन नहीं है। –

+2

माइग्रेशन Django 1.8 में जोड़ा गया था, इसलिए जब आप Django के पुराने संस्करण से अपग्रेड करते हैं, तब भी इसे चलाया जाना चाहिए, भले ही आपने एथ ऐप नहीं बदला हो। यदि Django पहले से ही माइग्रेशन लागू किया गया है, तो आपको मैन्युअल रूप से शून्य बाधा को छोड़ने की आवश्यकता हो सकती है। – Alasdair

4

अपने डेटाबेस (MySQL टर्मिनल) पर जाएँ:

$ mysql

mysql> SELECT * FROM django_migrations;

आप कुछ रिकॉर्ड देखते हैं, तो अच्छा। उन्हें हटाओ।

mysql> TRUNCATE TABLE django_migrations;

छोड़ दो MySQL टर्मिनल, और माइग्रेशन फिर से Django में चलाएँ:

$ python manage.py migrate --fake-initial

सुनिश्चित करें कि इस संदेश प्रकट होता है:

0005_alter_user_last_login_null - [OK]

तो आप कुछ देख सकते हैं अन्य संघर्ष, यह ठीक है क्योंकि हमें केवल इस migrati बनाने की जरूरत है पर।

अपने MySQL और सर्वर को पुनरारंभ करें और आप जाने के लिए अच्छे हैं।

संबंधित मुद्दे