Django - Không có bảng nào như vậy: main.auth_user__old


82

Tôi đang làm theo hướng dẫn ứng dụng đầu tiên từ tài liệu Django chính thức và gặp lỗi này khi cố gắng lưu một số thay đổi được thực hiện thông qua trang quản trị. Tôi đã thực hiện một số nghiên cứu về nó, nhưng các giải pháp khả thi mà tôi có thể tìm thấy, chẳng hạn như di chuyển db, đơn giản là sẽ không hoạt động. Chỉ cần cho tôi biết nếu bạn muốn xem một số phần cụ thể trong mã của tôi.

Sau đây là lỗi:

OperationalError tại / admin / polls / question / 1 / change / no table như vậy: main.auth_user__old Phương thức yêu cầu: POST URL yêu cầu: http://127.0.0.1:8000/admin/polls/question/1/change/ Phiên bản Django: 2.1.4 Loại ngoại lệ: Giá trị ngoại lệ OperationalError: không có bảng như vậy: main.auth_user__old Vị trí ngoại lệ: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base .py trong thực thi, dòng 296 Python Executable: / Users / gfioravante / Projects / test_app / ta_env / bin / python3 Phiên bản Python: 3.7.1 Đường dẫn Python:
['/ Users / gfioravante / Projects / test_app / test_app', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/ usr / local /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.7/ lib / python3.7 / lib-dynload ',' /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages '] Thời gian máy chủ: Thứ 4, ngày 5 tháng 12 năm 2018 16:45:00 +0000

và theo dõi lại:

Môi trường:

Phương thức yêu cầu: ĐĂNG yêu cầu URL: http://127.0.0.1:8000/admin/polls/question/1/change/

Phiên bản Django: 2.1.4 Phiên bản Python: 3.7.1 Ứng dụng đã cài đặt: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django .contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles '] Phần mềm trung gian đã cài đặt: [' django.middleware.security.SecurityMiddleware ',' django.contrib.sessions.middleware.SessionMiddleware ',' django .middle phần mềm ']

Tìm lại:

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong _execute 85. return self.cursor.execute (sql, params)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" trong thực thi 296. return Database.Cursor.execute (self, query, params)

Ngoại lệ ở trên (không có bảng nào như vậy: main.auth_user__old) là nguyên nhân trực tiếp của ngoại lệ sau:

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" trong nội dung 34. response = get_response (request)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" trong _get_response 126. response = self.process_exception_by_middleware (e, request)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" trong _get_response 124. response = wrap_callback (yêu cầu, * callback_args, ** callback_kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" trong wrapper 604. return self.admin_site.admin_view (view) (* args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" trong _wrapped_view 142. response = view_func (request, * args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py" trong _wrapped_view_func 44. response = view_func (request, * args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" trong chế độ xem bên trong 223. trả về (yêu cầu, * args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" trong change_view 1640. return self.changeform_view (request, object_id, form_url, extra_context)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" trong _wrapper 45. return bind_method (* args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" trong _wrapped_view 142. response = view_func (request, * args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" trong changeform_view 1525. return self._changeform_view (request, object_id, form_url, extra_context)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" trong _changeform_view 1571. self.log_change (request, new_object, change_message)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" trong log_change 826. change_message = message,

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py" trong log_action 35. change_message = change_message,

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" trong manager_method 82. return getattr (self.get_queryset (), name) (* args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" trong tạo 413. obj.save (force_insert = True, using = self.db )

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" trong lưu 718. force_update = force_update, update_fields = update_fields)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" trong save_base 748. updated = self._save_table (raw, cls, force_insert, force_update , using, update_fields)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" trong _save_table 831. result = self._do_insert (cls._base_manager, sử dụng, các trường , update_pk, raw)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" trong _do_insert 869. using = using, raw = raw)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" trong manager_method 82. return getattr (self.get_queryset (), name) (* args, ** kwargs)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" trong _insert 1136. return query.get_compiler (using = using) .execute_sql (return_id )

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" trong execute_sql 1289. cursor.execute (sql, params)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong thực thi 100. return super (). Execute (sql, params)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong thực thi 68. return self._execute_with_wrappers (sql, params, many = False, người thực thi = self._execute)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong _execute_with_wrappers 77. return thi hành (sql, params, nhiều, ngữ cảnh)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong _execute 85. return self.cursor.execute (sql, params)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" trong lối ra 89. raise dj_exc_value.with_traceback (traceback) từ exc_value

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" trong _execute 85. return self.cursor.execute (sql, params)

Tệp "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" trong thực thi 296. return Database.Cursor.execute (self, query, params)

Loại ngoại lệ: OperationalError at / admin / polls / question / 1 / change / Exception Value: không có bảng như vậy: main.auth_user__old


Nếu bạn không có dữ liệu, chỉ cần xóa dữ liệu đó và di chuyển lại. Nếu không thể, hãy làm python manage.py showmigrationsđể xem những di chuyển nào không được thực hiện
seuling

Câu trả lời:


52

Tôi vừa xem qua cái này, có vẻ như nó liên quan đến https://code.djangoproject.com/ticket/29182 . Hiện tại, bạn chỉ có thể hạ cấp phiên bản sqlite của mình xuống phiên bản trước 2.6 (ví dụ: 2.5.1)


7
Bản sửa lỗi cho vấn đề hiện đã được cam kết và nó sẽ được đưa vào các bản phát hành điểm tiếp theo 2.1.5 (dự kiến ​​ngày 1 tháng 1 năm 2019) và 2.0.10 (ngày phát hành TBD).
Alasdair

7
Không dễ dàng như vậy để hạ cấp hệ thống macOS sqlite3 hay tôi đang thiếu thứ gì đó ở đây? Cách giải quyết của tôi là cài đặt github / master django (nơi điều này đã được khắc phục).
Alper

1
@Alper Tôi đã gỡ cài đặt django hiện tại và sau đó cài đặt django từ GitHub. lỗi vẫn còn và tôi không thể hạ cấp sqlite3 trên macOS của mình (ví dụ: sử dụng brew install sqlite3@3.25.1) Bạn có ý kiến ​​gì không?
Hatzil

5
Sau khi cập nhật, hãy nhớ xóa cơ sở dữ liệu và xây dựng lại nó bằng lệnh di chuyển.
Mitsjol

9
@Alvaro Lỗi được sửa trong Django 2.1.5
Selcuk

49

Dễ dàng loại bỏ vấn đề này bằng cách duy trì các bước sau:

  1. giữ django phiên bản 2.1.5 (vấn đề được giải quyết trong phiên bản này) pip install django==2.1.5
  2. Xóa db SQLite
  3. Di chuyển một lần nữa python manage.py makemigrationsvà sau đópython manage.py migrate
  4. Khởi động máy chủ python manage.py runserver

LÀM XONG!


1
Điều này sẽ hoạt động hoàn hảo nhưng giả sử bạn không muốn xóa tệp sqlite db?
Philip Mutua

1
điều này hoạt động ngay cả khi không xóa db sqlite (nhưng vẫn di chuyển). tôi đã làm việc trên các dự án cũ với 2.0.4
izzulmakin

Cảm ơn, điều này hoạt động tốt. Tôi đang sử dụng phiên bản 2.0.7 và gặp sự cố khi lưu dữ liệu trên phần quản trị.
xreyc_developer22

13

Chỉ cần làm điều này và nó đã giải quyết được sự cố:

pip install Django --upgrade

Sau đó:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

10

Sự cố là do hành vi được sửa đổi của ALTER TABLE RENAMEcâu lệnh trong SQLite 3.26.0 (xem lưu ý về tính tương thích ). Họ cũng giới thiệu PRAGMA legacy_alter_table = ONtuyên bố để duy trì khả năng tương thích với các phiên bản trước. Bản phát hành Django 2.1.5 sắp tới sử dụng câu lệnh đã đề cập trước đó như một hotfix. Dự kiến ​​vào ngày 1 tháng 1 năm 2019.


10

Đây là những gì tôi đã làm để giải quyết vấn đề này:

  1. Chuyển đến môi trường ảo và cài đặt django@2.1.7

    pip install django==2.1.7
    
  2. Xóa db.sqlite3tệp trong thư mục gốc của bạn.

  3. Tạo mới db.sqlite3trong thư mục gốc của bạn.
  4. Chạy lại quá trình di chuyển:

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

Bây giờ nó sẽ hoạt động tốt.


"xóa tệp db.sqlite3 trong thư mục gốc của bạn" là chìa khóa ~ run python3 management.py makemigrations sẽ tạo tệp sqlite3 mới.
Jerome

Vì một số lý do xóa sqlite không hoạt động, tôi đã thử xóa cả pycache + migrations (tôi mới học Django), sau đó nó hoạt động với tôi.
Anshuman Kumar

9

chuyển đến thư mục này django / db / backends / sqlite3

sao lưu schema.pytệp vào một thư mục khác

mở schema.py ban đầu trong trình soạn thảo văn bản

ở đó bạn có thể thấy một đoạn mã như

    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__()

nhận xét chúng và dán đoạn mã sau

     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__()

Điều này đã làm việc cho tôi. (bản sao lưu cho schema.py trong trường hợp công việc gặp trục trặc; D)

để biết thêm thông tin

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


Tôi đã sử dụng bản sửa lỗi này cho django 1.11, ngoại trừ việc tôi chỉ phải thêm dòng "c.execute ('PRAGMA inherit_alter_table = ON')" sau "c.execute ('PRAGMA Foreign_keys = 0')" và điều đó đã sửa nó.
n00b

2
Tôi đang xem hướng dẫn yêu cầu django 2.0.7. Giải pháp này hoạt động :)
Bisonbleu

@Bisonbleu Tôi nghĩ rằng tôi đang ở giữa cùng một hướng dẫn. Nhưng giải pháp đã không làm việc cho tôi. Bạn có thể giải thích những gì bạn đã làm?
code_life

2
@unathletic_coder như được đề xuất trong câu trả lời của Namal Jayasundara, tôi đã truy cập /project_name/lib/python3.7/site-packages/django/db/backends/sqlite3/schema.py tại dòng 21 bắt đầu bằng: def __enter __ (self): và đã thay thế mã hiện có bằng 3 dòng mã được đề xuất. Tôi đang làm youtube.com/watch?v=F5mRW0jo-U4
Bisonbleu

6

Tôi đã giải quyết vấn đề bằng cách nâng cấp Django từ 2.1.4 lên 2.1.5, nhưng tôi phải xây dựng lại dự án một lần nữa, vì lỗi có vẻ liên quan đến các đối tượng mà tôi đã chèn vào cơ sở dữ liệu bằng cách sử dụng phiên bản cũ của Django.


1
trong trường hợp đó, lệnh di chuyển và makemigrations khi đủ cho django mới.
Pravin RGMishra

5

đối với tôi, đó là từ phiên bản django của tôi (đó là 2.1) cài đặt phiên bản cao hơn (tôi đã sử dụng 2.1.5 vì một số lý do) ** xóa db.sqlite3 và mọi thứ trong thư mục di chuyển ngoại trừ lệnh chạy 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

Điều tương tự cũng xảy ra với tôi, rất bực bội. Tôi sử dụng anaconda cho môi trường của mình, tôi nhận thấy rằng tôi không thể xóa sqlite mà không cài đặt lại ngay phiên bản sqlite cập nhật nhất. Thử phiên bản cũ hơn của django dường như cũng không hiệu quả. Giải pháp duy nhất phù hợp với tôi là sử dụng cơ sở dữ liệu PostgreSQL. Nó chắc chắn không phải là lý tưởng nhưng tôi đang có kế hoạch sử dụng cơ sở dữ liệu PostgreSQL trong tương lai nên đây không phải là một sự lãng phí thời gian. Nếu bạn thấy mình ở cùng nơi với tôi thì video này có thể hữu ích nếu bạn muốn biết cách kết nối cơ sở dữ liệu PostgreSQL với dự án django của mình.

Bạn sẽ cần phải cài đặt cơ sở dữ liệu postgreSQL trước khi thực sự thực hiện các thay đổi trong settings.py, việc cài đặt ít hơn là nhấp vào Tiếp theo trên tất cả các tùy chọn. Tuy nhiên, hãy nhớ tên người dùng và mật khẩu bạn sử dụng trong quá trình cài đặt.


4
  1. Đầu tiên, dừng máy chủ và xóa db.sqlite3.
  2. Sau đó, bạn cần chạy: python management.py makemigrations python management.py migrate
  3. Sau khi chạy lệnh này, bạn cần tạo siêu người dùng. Để tạo siêu người dùng, hãy chạy: python management.py createuperuser Nhập chi tiết người dùng cấp cao vào đó.
  4. Chạy lại máy chủ của bạn.

Của bạn đây.


3

Đối với vấn đề trên và giải pháp là:

1) Đi tới thiết bị đầu cuối và nhập vào pip install django==2.1.7hoặc phiên bản mới nhất của django

2) Sau khi cài đặt, Trong thiết bị đầu cuối, nhập vào python manage.py makemigrations, sau đópython manage.py migrate

3) Trong thiết bị đầu cuối, Khởi động máy chủ bằng mã python manage.py runserver

4) Đăng nhập vào máy chủ quản trị bằng mật khẩu và thêm sản phẩm, Nó sẽ thêm sản phẩm thành công.


Chào mừng bạn đến với Stack Overflow! Vui lòng tiết lộ bất kỳ chi nhánh nào và không sử dụng trang web như một cách để quảng bá trang web của bạn thông qua đăng bài. Xem Làm thế nào để tôi viết một câu trả lời tốt? .

2

Đối với những người khác không muốn hạ cấp bất kỳ phần mềm nào, bạn có thể truy cập vào settings.pytệp của mình và trong DATABASESdict, bạn có thể thay thế .sqlit3bằng .postgresql, và ngay bên dưới nó thay đổi db.sqlit3thành db.sql. Điều này sẽ chuyển db mặc định của bạn sang sử dụng postgreSQL.

Khi làm như vậy, bạn sẽ cần pip install psycopg2.

Xóa db.sqlite3tệp của bạn (nếu bạn có / không quan tâm đến việc mất những gì trong đó) và mọi thứ khác không phải là __init__.pytệp trong thư mục di chuyển của ứng dụng của bạn. Khi bạn đã hoàn thành tất cả những điều đó, bạn có thể chạy python manage.py makemigrationsvà python manage.py migratevà sau đó nó sẽ hoạt động :)

Hy vọng tôi đã có thể giúp một ai đó!


2
PostgreSQL cũng cần được cài đặt để điều này hoạt động cho bất kỳ ai không thể tìm ra lý do tại sao bạn gặp lỗi kết nối sau khi thực hiện tất cả những điều này. :)
Gilbert

psycopg2 có phải là PostgreSQL không? Nguyên nhân đó có thể giải thích lý do tại sao nó sẽ không bắt đầu một máy chủ cho tôi haha
Ziiik

2
AFAIK psycopg2 là một bộ điều hợp để Python nói chuyện với PostgreSQL, nhưng PostgreSQL cần được cài đặt riêng. Lưu ý: Tôi mới làm quen với Django vì vậy hãy xem bất cứ điều gì tôi nói với một hạt muối.
Gilbert

2

Mở => / YourAppFolder / migrations / Bạn sẽ thấy các tệp di chuyển giống như ' 0001_initial.py ' xóa tất cả các tệp này. Và chạy lệnh follwing 1- python manage.py makemigrations 2- python manage.py migrate Hy vọng, nó phải giải quyết được vấn đề của bạn


1
cuối cùng thì vấn đề không liên quan đến điều đó, nhưng cảm ơn bạn đã dành thời gian!
northernSage

2

Ngay cả sau khi nâng cấp lên Django 2.2.12 mới nhất và chạy một trong hai migratehoặc tập lệnh xây dựng lại cơ sở dữ liệu chính thức , tôi vẫn gặp lỗi tương tự với __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.

Đây là bản hack của tôi:

  1. kết xuất nội dung cơ sở dữ liệu vào sql: sqlite3 my_db.db .dump > my_db.sql
  2. chạy một regex trên đầu ra sql, thay thế __old" ("id")bằng" ("id") DEFERRABLE INITIALLY DEFERRED
  3. xóa tệp cơ sở dữ liệu cũ
  4. tải sql đã sửa đổi vào cơ sở dữ liệu mới: sqlite3 my_db.db < my_db.sql
  5. ??? & lợi nhuận

1

Các bước:

  1. Gỡ cài đặt Django hiện tại khỏi ENV của bạn. Chỉ cần xóa thư mục "anaconda3 / envs / yourenv / lib / python3.7 / site-pack / Django all version .. * Lưu ý: Chỉ dành cho người dùng Anaconda, những người dùng khác nên tìm cách gỡ cài đặt gói khỏi ENV của bạn.

  2. Truy cập Github.com/django/django.

  3. Tải xuống repo dưới dạng tệp zip.

  4. Giải nén zip.

  5. Chuyển sang ENV của bạn.

  6. Nhập thư mục đã giải nén.

  7. Chạy "python setup.py install" Và cài đặt Django.

  8. Xóa tệp db.sqlite3 trước đó của bạn. Bây giờ hãy áp dụng di chuyển một lần nữa để tạo tệp db.sqlite3 mới.

* Lưu ý: Tôi không biết cách sửa lỗi dbfile trước đó và ngăn chặn mất dữ liệu. Vì vậy, xin vui lòng cho tôi biết nếu bạn biết.

  1. Chạy máy chủ.

Chúc mừng! Nó hoạt động tốt bây giờ.

Cập nhật django mới nhất vào tháng 1 từ bản phát hành Django chính thức.


1

Tôi đã gặp vấn đề tương tự ngoại trừ việc tôi có 2 cơ sở dữ liệu sqlite và bộ định tuyến cơ sở dữ liệu tùy chỉnh. Tôi đã quản lý để nó hoạt động bằng cách hạ cấp Django xuống 1.11.20 và không cần tạo lại cơ sở dữ liệu.


1

Đối với những người không thể giải quyết lỗi này bằng các câu trả lời ở trên, nếu bạn đã đặt ứng dụng của mình với tên là "chính", lỗi này có thể xảy ra do cùng một tên ứng dụng. Vì vậy, hãy cố gắng thay đổi tên ứng dụng của bạn “chính” thành một tên khác.



1

Tôi đã giải quyết vấn đề bằng cách thay đổi một số mô hình của mình. Tôi đã có một dự án được đặt tên và một dự án được đặt tên. Các bảng cơ sở dữ liệu đã nhầm lẫn và khiến tôi gặp lỗi này.


1

Tôi đã giải quyết vấn đề này bằng cách sử dụng bên dưới:

1) Xóa db.sqlit3

2) thư mục của ứng dụng xóa mọi thứ trong pycache

3) management.py makemigrations, management.py di chuyển, quản lý.py tạo người dùng và sau đó quản lý máy chủ chạy.


1

Tôi đã gặp sự cố tương tự và đã khắc phục nó bằng cách thực hiện như sau:

1) Tải djangophiên bản mới nhất

2) tải SQL Litephiên bản mới nhất

3) xóa db.sqlite3tệp khỏi dự án của bạn

4) Thực hiện một thay đổi nhỏ đối với models.py(ví dụ: thay đổi kích thước của một trường)

5) tạo một db.sqllite3tệp mới bằng cách chạy makemigrations&migrate commands

6) nhập db.sqllite3tệp mới tạo vàoSQL Lite


1

Tôi đã cài đặt / hạ cấp django xuống phiên bản 2.2, điều này đã xóa django 3.x

pip install django==2.2

và sau đó tôi đã xóa tệp db.sqlite và sau đó

Tôi đã thử

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

1

cập nhật phiên bản django: pip cài đặt django - nâng cấp sau đó

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


0

Chỉ có 4 điều tôi đã làm trên dòng lệnh và nó đã sửa lỗi của tôi.

  1. ctrl + c (dừng máy chủ)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver (khởi động máy chủ)

1
Vấn đề này đã được cố định với 2.1.5 điểm phát hành (số vé # 29.182 trong "Sửa lỗi phiên họp của release notes). Docs.djangoproject.com/en/2.1/releases/2.1.5/#bugfixes
northernSage

0

django-2.2.7
Điều này làm việc cho tôi -

1) Xóa db.sqlite3 .
2) Trong mỗi ứng dụng, trong thư mục di chuyển , hãy xóa mọi thứ ngoài __init__.py .
3) Trong mỗi ứng dụng, xóa thư mục __pycache__ .

Tôi không chắc liệu bạn có phải làm điều đó cho tất cả các ứng dụng hay chỉ ứng dụng có liên quan hay không, nhưng điều này đã hiệu quả với tôi.


Xóa migrationstệp là cách thực hành đáng để giải quyết những vấn đề kiểu này. @rajvijay
Whale 52Hz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.