Django - ऐसी कोई तालिका नहीं: main.auth_user__old


85

मैं आधिकारिक Django डॉक्स से पहले ऐप ट्यूटोरियल का अनुसरण कर रहा था और व्यवस्थापक पृष्ठ के माध्यम से किए गए कुछ परिवर्तनों को बचाने की कोशिश करते समय यह त्रुटि मिली। मैंने इस पर कुछ शोध किया, लेकिन संभव समाधान जो मैं खोजने में सक्षम था, जैसे कि db को माइग्रेट करना, बस काम नहीं करेगा। बस मुझे यह बताना चाहिए कि क्या आप मेरे कोड का कुछ विशिष्ट भाग देखना चाहते हैं।

निम्नलिखित त्रुटि है:

OperationalError at / admin / polls / question / 1 / change / no ऐसी तालिका: main.auth_user__old अनुरोध विधि: POST अनुरोध URL: http://127.0.0.1:8000/admin/polls-question/1/change/ Django संस्करण: 2.1.4 अपवाद प्रकार: ऑपरेशनलएयर एक्सेप्शन वैल्यू: ऐसी कोई तालिका नहीं: main.auth_user__old अपवाद स्थान: /User/gfioravante/Projects/test_app/ta_env/bib/python3.7/site-packages/django/db/backends/sqlite3 निष्पादित करने के लिए .py, लाइन 296 पायथन निष्पादन योग्य: / उपयोगकर्ता / gfioravante / परियोजनाएं / test_app / ta_env / bin / python3 पायथन संस्करण: 3.7.1 पायथन पथ:
['/ उपयोगकर्ता / gfioravante / परियोजनाओं / test_app / test_app', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/ usr / स्थानीय / स्थानीय / Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7 ',' /usr/local/Cellar -python/3.7.1/Frameworks/Python.framework/Versions/3.77 lib / python3.7 / lib-dynload ',' /User/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages ': सर्वर समय: बुध, 5 दिसंबर 2018 16:45:00 +0000

और ट्रेसबैक:

वातावरण:

अनुरोध विधि: POST अनुरोध URL: http://127.0.0.1:8000/admin/polls/question/1/hange//

Django संस्करण: 2.1.4 पायथन संस्करण: 3.7.1 इंस्टॉल किए गए एप्लिकेशन: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django .contrib.session ',' django.contrib.messages ',' django.contrib.staticfiles '] स्थापित मिडलवेयर: [' django.middleware.security.SecurityMiddleware ',' django.contrib.session.middleware.SessionMiddleware ',' django ' .mieldware.common.CommonMiddleware ',' django.middleware.csrf.CsrfViewMiddleware ',' django.contrib.auth.middleware.AuthenticationMiddleware ',' django.contrib.messages.middleware.MessageMiddleware ',' djangoware.com पहेली '। ']

वापस ट्रेस करें:

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" _execute 85 में वापस लौटें। self.cursor.execute (sql, params) लौटें।

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3-base.py" को निष्पादित करने के लिए 296. वापसी डेटाबेस। Cursor.execute (स्व, क्वेरी, पैरामीटर)

उपरोक्त अपवाद (ऐसी कोई तालिका नहीं: main.auth_user__old) निम्नलिखित अपवाद का प्रत्यक्ष कारण था:

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" इनर 34। प्रतिक्रिया = get_response (अनुरोध)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" ___response 126 में प्रतिक्रिया। self =process_exception_by_mieldware (e, request)

फाइल "/User/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" ___esponse 124 में। प्रतिक्रिया = लपेटें_कॉलबैक (अनुरोध, * callback_args, ** callback_kwar)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" को रैपर 604 में वापस लौटें। स्व.आमिन_साइट.आदमी_व्यू (देखें) (* args) ** kwargs)

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" _rarapped_view 142. response = view_func (request, * arwargs) में क्लिक करें।

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py" में _wrapped_view_func 44. response = view_func (request, * args) पर क्लिक करें।

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" आंतरिक 223 में देखें। वापसी दृश्य (अनुरोध, * args, ** kwargs)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" में Change_view 1640 पर लौटें। self.changeform_view (अनुरोध, object_id, form_url, extra_confxt)

_Rapper 45 में "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" फ़ाइल 45. returneth_method (* args, ** kwargs) वापस करें

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" _rarapped_view 142. response = view_func (request, * arwargs) में क्लिक करें।

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" को changeform_view 1525 में लौटाएं। self._changeform_view (request, object_id, form_url, extra_url)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" _changeform_view 1571 पर। self.log_change (अनुरोध, new_object, change_message)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" log_change 826 में। Change_message = message, मैसेज करें

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py" log_action 35 में। change_message = change_message,

Manager_method 82 में रिटर्न getattr (self.get_queryset (), name (*) का नाम "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" दर्ज करें। args, ** kwargs)

413 में फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" = = self.db = का उपयोग कर। )

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" को बचाने के लिए 718 में सहेजें। force_update = force_update, update_fields = update_fields =

Save_base 748 में फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" = self._save_table (रॉ, फ़ोर्स, फोर्स_इन्टर / फोर्स) , का उपयोग कर, अद्यतन_फिल्ड्स)

_Save_table 831 में परिणाम "self._do_insert (cls._base_manager) का उपयोग करके फ़ाइल" /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py "। , update_pk, raw)

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" _do_insert 869 में। = का उपयोग करके, कच्चे = कच्चे)

Manager_method 82 में रिटर्न getattr (self.get_queryset (), name (*) का नाम "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" दर्ज करें। args, ** kwargs)

_Inser 1136 में फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" .execute_sql_sql_lq/dq पर लौटें। )

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql.compiler.py" execute_sql 1289. कर्सर.execute (sql, params) में

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" में निष्पादित करें 100. वापसी सुपर ()। निष्पादित करें (sql, params)

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" को निष्पादित करने में 68. वापसी self._execute_with_wrappers (sql, params, many = False) निष्पादक = self._execute)

फ़ाइल "/User/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" _execute_with_wrappers 77 में लौटें निष्पादक (sql, params, many, reference, संदर्भ)

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" _execute 85 में वापस लौटें। self.cursor.execute (sql, params) लौटें।

फ़ाइल से बाहर निकलें 89 में "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py"

फाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" _execute 85 में वापस लौटें। self.cursor.execute (sql, params) लौटें।

फ़ाइल "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3-base.py" को निष्पादित करने के लिए 296. वापसी डेटाबेस। Cursor.execute (स्व, क्वेरी, पैरामीटर)

अपवाद प्रकार: ऑपरेशनलएयर / एडमिन / पोल / प्रश्न / 1 / परिवर्तन / अपवाद मूल्य: ऐसी कोई तालिका नहीं: main.auth_user__old


यदि आपके पास डेटा नहीं है, तो इसे हटा दें और फिर से माइग्रेट करें। यदि संभव न हो, तो python manage.py showmigrationsयह देखने के लिए कि कौन से माइग्रेशन नहीं हुए हैं
जब्त करना

जवाबों:


52

मैं अभी खुद इस पार आया था, यह https://code.djangoproject.com/ticket/29182 से संबंधित है । अभी के लिए, आप 2.6 से पहले के संस्करण के लिए अपने वर्गाकार संस्करण को डाउनग्रेड कर सकते हैं (उदाहरण के लिए 2.5.1)


7
समस्या के लिए एक समाधान अब प्रतिबद्ध किया गया है, और इसे अगले बिंदु रिलीज 2.1.5 (अपेक्षित जनवरी 1 2019) और 2.0.10 (रिलीज की तारीख टीबीडी) में शामिल किया जाएगा।
अलास्दैर

8
MacOS सिस्टम sqlite3 को डाउनग्रेड करना इतना आसान नहीं है या क्या मैं यहां कुछ याद कर रहा हूं? मेरा काम गिथब / मास्टर django (जहां यह तय हो गया है) स्थापित करना है।
एलपर

1
@Alper मैंने वर्तमान django की स्थापना रद्द की और फिर GitHub से django स्थापित किया। बग अभी भी बनी हुई है, और मैं अपने macOS पर sqlite3 को डाउनग्रेड करने में सक्षम नहीं था (उदाहरण के लिए, काढ़ा स्थापित sqlite3@3.25.1 का उपयोग करके) कोई विचार?
हाटज़िल

5
अपडेट करने के बाद डेटाबेस को हटाना सुनिश्चित करें और इसे माइग्रेशन कमांड के साथ पुनर्निर्माण करें।
मित्सजोल

9
बग Django 2.1.5 में तय हो गई है @Alvaro
Selcuk

53

निम्नलिखित चरणों को आसानी से बनाए रखने के लिए इस समस्या से छुटकारा पाएं:

  1. django संस्करण 2.1.5 रखें (इस संस्करण में संबोधित किया गया मुद्दा) pip install django==2.1.5
  2. SQLite db हटाएं
  3. बार python manage.py makemigrations- बार प्रवास करेंpython manage.py migrate
  4. सर्वर शुरू करें python manage.py runserver

किया हुआ!


1
यह पूरी तरह से काम करेगा, लेकिन मान लीजिए कि आप sqlite db फाइल को हटाना नहीं चाहते हैं?
फिलिप मटुआ

1
यह साइक्लाइट डीबी (लेकिन अभी भी माइग्रेट) को हटाने के बिना भी काम करता है। मैं 2.0.4 के साथ पुरानी परियोजनाओं पर काम कर रहा था
izzulmakin 13

धन्यवाद, यह अच्छी तरह से काम करता है। मैं संस्करण 2.0.7 का उपयोग कर रहा हूं और व्यवस्थापक पर डेटा सहेजने में समस्या है।
xreyc_developer22 10

बहुत बहुत धन्यवाद, यह अच्छी तरह से काम करता है
नए प्रोग्रामर

15

बस यही किया और इसने समस्या हल कर दी:

pip install Django --upgrade

फिर:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

11

इस समस्या को हल करने के लिए मैंने यहाँ क्या किया है:

  1. वर्चुअल वातावरण पर जाएं और इंस्टॉल करें django@2.1.7

    pip install django==2.1.7
    
  2. हटाएं db.sqlite3अपने रूट फ़ोल्डर में फ़ाइल।

  3. db.sqlite3अपने रूट फ़ोल्डर में नया बनाएँ ।
  4. पुनः माइग्रेशन चलाएं:

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

अब सब ठीक होना चाहिए।


"अपने रूट फ़ोल्डर में db.sqlite3 फ़ाइल हटाएं" कुंजी है ~ python3 manage.py makemigrations नई sqlite3 फ़ाइल बनाएगा।
जेरोम

किसी कारण के लिए sqlite को हटाना सिर्फ काम नहीं था, मैंने pycache + माइग्रेशन को हटाने की कोशिश की (मैं सिर्फ Django सीख रहा हूं), फिर इसने मेरे लिए काम किया।
अंशुमान कुमार

10

समस्या ALTER TABLE RENAMESQLite 3.26.0 में कथन के संशोधित व्यवहार के कारण होती है (देखें समरूपता नोट )। उन्होंने PRAGMA legacy_alter_table = ONपिछले संस्करणों के साथ संगतता बनाए रखने के लिए बयान भी पेश किया । आगामी Django रिलीज़ 2.1.5 पहले उल्लेखित कथन को एक हॉटफ़िक्स के रूप में उपयोग करता है। यह 1 जनवरी, 2019 को होने की उम्मीद है।


9

इस फ़ोल्डर django / db / backends / sqlite3 पर जाएं

schema.pyदूसरे फ़ोल्डर में बैकअप फ़ाइल

टेक्स्ट एडिटर में ओरिजिनल स्कीमा एरोकोम खोलें

वहाँ आप एक कोड स्निपेट जैसे देख सकते हैं

    def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
     # disabled. Enforce it here for the duration of the schema edition.
     if not self.connection.disable_constraint_checking():
         raise NotSupportedError(
             'SQLite schema editor cannot be used while foreign key '
             'constraint checks are enabled. Make sure to disable them '
             'before entering a transaction.atomic() context because '
             'SQLite3 does not support disabling them in the middle of '
             'a multi-statement transaction.'
         )
     self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
     return super().__enter__()

उन्हें टिप्पणी दें और निम्नलिखित कोड स्निपेट पेस्ट करें

     def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
    # disabled. Enforce it here for the duration of the transaction.
    self.connection.disable_constraint_checking()
    self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
    return super().__enter__()

इसने मेरे लिए काम किया। (स्कीमा के लिए बैकअप गलत होने की स्थिति में काम के लिए बैकअप है; डी)

अधिक जानकारी के लिए

https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef


मैंने django 1.11 के लिए इस फ़िक्स का उपयोग किया, सिवाय इसके कि मुझे केवल "c.execute (" PRAGMA Foreign_s = 0 ') "के बाद" c.execute (' PRAGMA विरासत_alter_table = ON ') लाइन जोड़ना था और जिसने इसे ठीक किया।
n00b

2
मैं एक ट्यूटोरियल के बीच में हूं जिसके लिए django 2.0.7 की आवश्यकता है। यह समाधान काम करता है :)
Bisonbleu

@Bisonbleu मुझे लगता है कि मैं उसी ट्यूटोरियल के बीच में हूं। लेकिन समाधान मेरे काम नहीं आया। क्या आप विस्तृत कर सकते हैं कि आपने क्या किया?
code_life

2
@unathletic_coder जैसा कि नमल जयसुंदरा के उत्तर में सुझाया गया है, मैं 21 पंक्ति में /project_name/lib/python3.7/site-packages/django/db/backends/sqtite3/schema.py पर गया, जो __enter __ (स्व) के साथ शुरू होता है: मौजूदा कोड को सुझाए गए कोड की 3 पंक्तियों के साथ बदल दिया गया है। मैं youtube.com/watch?v=F5mRW0jo-U4
Bisonbleu

6

मैंने 2.1.4 से 2.1.5 तक Django को अपग्रेड करके समस्या को हल किया, लेकिन मुझे नए सिरे से प्रोजेक्ट का पुनर्निर्माण करना पड़ा, क्योंकि बग किसी भी तरह से उन वस्तुओं से संबंधित है जो मैंने डेटाबेस में Django के पुराने संस्करण का उपयोग करके डाला था।


1
उस मामले में माइग्रेट और makemigrations कमांड जहां नए django के लिए पर्याप्त है।
प्रवीण RGMishra

5
  1. सबसे पहले, सर्वर को बंद करें और db.sqlite3 हटाएं।
  2. फिर, आपको चलाने की आवश्यकता है: python manage.py makemigrations python manage.py माइग्रेट
  3. इस कमांड को चलाने के बाद आपको सुपर यूजर बनाना होगा। सुपर उपयोगकर्ता बनाने के लिए, चलाएँ: python manage.py createuperuser वहाँ सुपर उपयोगकर्ता विवरण दर्ज करें।
  4. अपना सर्वर फिर से चलाएँ।

तुम वहाँ जाओ।


5

मेरे लिए, यह मेरे django संस्करण से था (जो 2.1 था) उच्च संस्करण स्थापित करें (मैंने कुछ कारणों से 2.1.5 का उपयोग किया) ** db.sqlite3 हटाएं, और init .py रन कमांड को छोड़कर माइग्रेशन फ़ोल्डर में सब कुछ :

pip install django==2.1.5 --upgrade
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

4

मेरे साथ भी यही हुआ, बहुत निराशा हुई। मैं अपने वातावरण के लिए एनाकोंडा का उपयोग करता हूं, मैंने पाया कि मैं तुरंत साइक्लाइट को हटाए बिना साइकल को हटा नहीं सकता। Django के पुराने संस्करण की कोशिश भी काम नहीं कर रही थी। एकमात्र समाधान जो मेरे लिए काम किया है वह पोस्टग्रेक्यूएल डेटाबेस का उपयोग करके है। यह निश्चित रूप से आदर्श नहीं है, लेकिन मैं भविष्य में PostgreSQL डेटाबेस का उपयोग करने की योजना बना रहा हूं, इसलिए यह समय की पूरी बर्बादी नहीं थी। यदि आप अपने आप को उसी स्थान पर पाते हैं जैसे मैं तब था तो यह वीडियो मददगार हो सकता है यदि आप जानना चाहते हैं कि पोस्टग्रेक्यूएल डेटाबेस को अपने django प्रोजेक्ट के साथ कैसे जोड़ा जाए।

वास्तव में सेटिंग में बदलाव करने से पहले आपको पोस्टग्रेक्यूएल डेटाबेस को स्थापित करना होगा, सभी विकल्पों पर इंस्टॉलेशन कम क्लिक करने से अधिक है। हालांकि, स्थापना के दौरान आपके द्वारा उपयोग किए जाने वाले उपयोगकर्ता नाम और पासवर्ड को याद रखें।


3

उपरोक्त समस्या और समाधान के लिए है:

1) टर्मिनल पर जाएं और pip install django==2.1.7django के नवीनतम संस्करण में टाइप करें

2) स्थापना के बाद, टर्मिनल प्रकार में python manage.py makemigrationsऔर फिरpython manage.py migrate

3) टर्मिनल में, कोड के साथ सर्वर शुरू करें python manage.py runserver

4) पासवर्ड और उत्पाद जोड़ने के साथ व्यवस्थापक सर्वर में प्रवेश करें, यह उत्पाद को सफलतापूर्वक जोड़ देगा।


ढेर अतिप्रवाह में आपका स्वागत है! कृपया किसी भी संबद्धता का खुलासा करें और पोस्टिंग के माध्यम से अपनी साइट को बढ़ावा देने के लिए साइट के रूप में उपयोग न करें। देखिए मैं एक अच्छा उत्तर कैसे लिखूं?

2

अन्य जो किसी भी सॉफ्टवेयर को डाउनग्रेड नहीं करना चाहती लिए, आप अपने में जा सकते हैं settings.pyफ़ाइल और में DATABASESdict, आप बदल सकते हैं .sqlit3के साथ .postgresql, और सही नीचे इसे बदलने db.sqlit3के लिए db.sql। यह postgreSQL का उपयोग करने के लिए आपके डिफ़ॉल्ट db को स्विच करता है।

ऐसा करने के लिए, आपको इसकी आवश्यकता होगी pip install psycopg2

अपनी db.sqlite3फ़ाइल हटाएं (यदि आपके पास एक है / इसमें खोने के बारे में परवाह नहीं है) और बाकी सब कुछ जो __init__.pyआपके ऐप के माइग्रेशन फ़ोल्डर में फ़ाइल नहीं है । एक बार जब आप वह सब कर लेते हैं, तो आप दौड़ सकते हैं python manage.py makemigrationsऔर अजगर manage.py migrateऔर फिर यह काम करना चाहिए :)

आशा है कि मैं किसी की मदद करने में सक्षम था!


2
PostgreSQL को इसके लिए भी काम करने की जरूरत है, जो यह पता नहीं लगा सकता है कि यह सब करने के बाद आपको कनेक्शन संबंधी त्रुटियां क्यों हो रही हैं। :)
गिल्बर्ट

Psycopg2 क्या PostgreSQL नहीं है? कारण जो यह समझाता है कि यह मेरे लिए एक सर्वर क्यों नहीं शुरू करेगा
Ziiik

2
AFAIK psycopg2 PostgreSQL से बात करने के लिए अजगर पाने के लिए एक एडेप्टर है, लेकिन PostgreSQL को अलग से स्थापित करने की आवश्यकता है। नोट: मैं Django के लिए नया हूँ इसलिए मैं नमक के एक दाने के साथ कुछ भी कहता हूं।
गिल्बर्ट

2

ओपन => / YourAppFolder / माइग्रेशन / आप माइग्रेटिंग फ़ाइलों को देखना चाहेंगे जैसे ' 0001_initial.py ' इन सभी फ़ाइलों को हटा दें। और follwing कमांड चलाएं 1- python manage.py makemigrations 2- python manage.py migrate आशा है, यह आपकी समस्या को हल करना चाहिए


1
अंत में यह मुद्दा उस से संबंधित नहीं था, लेकिन समय निकालने के लिए धन्यवाद!
उत्तरीय

2

यहां तक ​​कि नवीनतम Django 2.2.12 में अपग्रेड करने और migrateया तो या आधिकारिक डेटाबेस स्क्रिप्ट के पुनर्निर्माण के बाद भी , मुझे इसके साथ एक ही त्रुटि मिली __old_: django.db.utils.IntegrityError: The row in table 'djangocms_blog_post_translation' with primary key '2' has an invalid foreign key: djangocms_blog_post_translation.master_id contains a value '2' that does not have a corresponding value in djangocms_blog_post__old.id.

यहाँ मेरा हैक है:

  1. डेटाबेस सामग्री को sql में डंप करें: sqlite3 my_db.db .dump > my_db.sql
  2. एसक्यूएल आउटपुट पर एक रेगेक्स चलाते हैं, __old" ("id")जिसके साथ प्रतिस्थापित किया जाता है" ("id") DEFERRABLE INITIALLY DEFERRED
  3. पुरानी डेटाबेस फ़ाइल को हटाएं
  4. एक नए डेटाबेस में संशोधित sql लोड करें: sqlite3 my_db.db < my_db.sql
  5. ??? & फायदा

1

कदम:

  1. अपने ENV से वर्तमान Django की स्थापना रद्द करें। बस फ़ोल्डर हटाएं "anaconda3 / envs / yourenv / lib / python3.7 / साइट-संकुल / Django सभी संस्करण .. * नोट: केवल एनाकोंडा उपयोगकर्ताओं के लिए, अन्य उपयोगकर्ताओं को यह पता लगाना चाहिए कि आपके ENV के लिए पैकेज की स्थापना रद्द कैसे की जाए।

  2. Github.com/django/django पर जाएं।

  3. रिपो को जिप फाइल के रूप में डाउनलोड करें।

  4. जिप निकालें।

  5. अपने ENV पर स्विच करें।

  6. निकाले गए फ़ोल्डर को दर्ज करें।

  7. "Python setup.py स्थापित" चलाएं और Django स्थापित करें।

  8. अपनी पिछली db.sqlite3 फ़ाइल हटाएं। अब नई db.sqlite3 फ़ाइल बनाने के लिए फिर से माइग्रेशन लागू करें।

* नोट: मुझे नहीं पता कि पिछले dbfile को कैसे ठीक करें और डेटा हानि को कैसे रोकें। तो कृपया मुझे बताएं यदि आप जानते हैं।

  1. सर्वर चलाएं।

बधाई! यह अब ठीक काम करता है।

आधिकारिक Django रिलीज़ से जनवरी में नवीनतम django को अपडेट करें।


1

मेरे पास एक ही मुद्दा था सिवाय इसके कि मेरे पास 2 sqlite डेटाबेस और कस्टम डेटाबेस राउटर थे। मैं इसे Django को 1.11.20 पर डाउनग्रेड करके काम करने में कामयाब रहा और डेटाबेस को फिर से बनाने की जरूरत नहीं पड़ी।


1

उन लोगों के लिए जो उपरोक्त उत्तरों के साथ इस त्रुटि को हल नहीं कर सकते हैं, अगर आपने अपना ऐप इसके नाम "मुख्य" के साथ बनाया था, तो यह त्रुटि समान ऐप नाम समस्या का कारण हो सकती है। इसलिए अपने ऐप का नाम "मुख्य" दूसरे में बदलने का प्रयास करें।


1

आपको Django को अपग्रेड करने की आवश्यकता है, यह समस्या इस PR में तय की गई है https://github.com/django/django/p/10/10/33


1

मैंने अपने कुछ मॉडल बदलकर समस्या का हल किया। मेरे पास एक नामित परियोजना और एक नामित परियोजनाएं थीं। डेटाबेस तालिकाओं में गड़बड़ हो गई और मुझे इस त्रुटि को फेंक दिया।


1

मैंने नीचे इस समस्या को हल किया है:

1) db.sqlit3 को हटाएं

2) ऐप की डायरेक्टरी pycache में सब कुछ डिलीट कर देती है

3) प्रबंध थिंकपैड makemigrations, manage.py माइग्रेट, manage.py createuperuser और उसके बाद manage.py runserver।


1

मेरे पास एक ही मुद्दा था और इसे नीचे करके तय किया:

1) नवीनतम प्राप्त करें django संस्करण

2) नवीनतम प्राप्त करें SQL Lite संस्करण

३) हटाना db.sqlite3 अपने प्रोजेक्ट से फ़ाइल

4) एक छोटा सा बदलाव करें models.py (जैसे किसी फ़ील्ड का आकार बदलें)

5) और db.sqllite3चलाकर एक नई फ़ाइल जनरेट करेंmakemigrationsmigrate commands

6) नई बनाई गई db.sqllite3फ़ाइल में आयात करेंSQL Lite


1

मैंने 2.2 संस्करण में django स्थापित / डाउनग्रेड किया, यह django 3.x को हटा दिया

pip install django==2.2

और फिर मैंने db.sqlite फ़ाइल को हटा दिया और फिर

मैंने कोशिश की

python manage.py makemigrations,
python manage.py migrate 
python manage.py creatingsuperuser. 

1

अद्यतन django संस्करण: पाइप स्थापित django - अद्यतन तो

./manage.py makemigration
./manage.py migrate
./manage.py runserver


0

वहाँ सिर्फ 4 चीजें हैं जो मैंने कमांड लाइन पर किया था और यह मेरा तय किया था।

  1. ctrl + c (सर्वर बंद करो)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver (सर्वर शुरू करें)

1
मुद्दा पहले से ही 2.1.5 बिंदु रिलीज (टिकट नंबर # 29,182 रिलीज नोट्स का "बग सत्र में) के साथ तय किया गया है। Docs.djangoproject.com/en/2.1/releases/2.1.5/#bugfixes
northernSage

0

django-2.2.7
यह मेरे लिए काम किया -

1) db.sqlite3 हटाएं ।
2) प्रत्येक ऐप के भीतर, माइग्रेशन फ़ोल्डर के भीतर , __init__.py के अलावा सब कुछ हटा दें ।
3) प्रत्येक एप्लिकेशन के भीतर, __pycache__ फ़ोल्डर हटाएं ।

मुझे यकीन नहीं है कि आपको इसे सभी ऐप या केवल संबंधित ऐप के लिए करना था, लेकिन यह मेरे लिए काम करता है।


migrationsइस तरह की समस्याओं को हल करने के लिए फाइलें हटाना अभ्यास के लायक है। @rajvijay
व्हेल 52Hz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.