2010-09-02 28 views
31

Tôi đã tìm thấy một số chủ đề với tiêu đề này, nhưng không có giải pháp nào phù hợp với tôi. Tôi có hai trang web Django chạy trên máy chủ của tôi, cả thông qua Apache bằng cách sử dụng các máy chủ ảo khác nhau trên hai cổng được cung cấp bởi giao diện Nginx của tôi (sử dụng cho các tệp tĩnh). Một trang web sử dụng MySql và chạy tốt. Các khác sử dụng Sqlite3 và nhận được lỗi trong tiêu đề.Django: không có bảng như vậy: django_session

Tôi đã tải xuống bản sao sqlite.exe và xem tệp mysite.sqlite3 (cơ sở dữ liệu SQLite trong thư mục này) và thực sự có bảng django_session có dữ liệu hợp lệ trong đó. Tôi có sqlite.exe trong system32 của tôi cũng như thư mục site-package trong đường dẫn Python của tôi.

Đây là một phần của tệp settings.py của tôi:

MANAGERS = ADMINS 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'mysite.sqlite3',   # Or path to database file if using sqlite3. 
     'USER': '',      # Not used with sqlite3. 
     'PASSWORD': '',     # Not used with sqlite3. 
     'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '',      # Set to empty string for default. Not used with sqlite3. 
    } 
} 

tôi đã sử dụng syncdb python manage.py không có lỗi và chỉ là một "Không Lịch thi đấu" nhận xét.

Có ai có bất kỳ ý tưởng nào khác có thể xảy ra ở đây không? Tôi đang xem xét chỉ chuyển tất cả mọi thứ sang MySql pal cũ của tôi và chỉ bỏ qua Sqlite, như thực sự nó luôn luôn cho tôi một số loại rắc rối. Tôi chỉ sử dụng nó vì lợi ích của việc biết nó anyway. Tôi không có lý do áp đảo vì sao tôi nên sử dụng nó. Nhưng một lần nữa, chỉ vì sự chỉnh sửa của tôi, có ai biết vấn đề này là gì không? Tôi không muốn từ bỏ.

Trả lời

46

Có thể máy chủ sử dụng một thư mục làm việc khác với lệnh manage.py. Vì bạn cung cấp một đường dẫn tương đối đến cơ sở dữ liệu sqlite, nó được tạo trong thư mục làm việc. Hãy thử nó với một đường dẫn tuyệt đối, ví dụ .:

'NAME': '/tmp/mysite.sqlite3', 

Hãy nhớ rằng bạn phải hoặc là chạy ./manage.py syncdb lại hoặc sao chép cơ sở dữ liệu hiện tại của bạn với các bảng hiện có để /tmp.

Nếu nó giải quyết được thông báo lỗi, bạn có thể tìm kiếm một nơi tốt hơn so với /tmp :-)

+0

thực sự, tôi đang chạy trên Windows XP x64;) Máy tính ở nhà của tôi là máy chủ phát triển. Lạ thay, điều đó đã hiệu quả khi nó không hoạt động trước đó. Tôi đã thay đổi đường dẫn tới các gói trang Python của mình và tạo ra một tệp cơ sở dữ liệu mới, tôi ghi đè tệp đó bằng tệp tôi đã có rồi chuyển nó trở lại thư mục mysite và thay đổi settings.py thành: 'I : /xampp/htdocs/mysite/mysite.sqlite3 'trong khe NAME. Nó làm việc cho một số lý do lẻ –

+0

Tôi nói rằng bởi vì trước khi tôi chỉ cần thay đổi NAME để điều đó chính xác và nó đã không làm việc. Nhưng tôi đoán buộc nó phải tạo một tệp cơ sở dữ liệu mới, ngay cả khi tôi chỉ ghi đè lên nó với những gì tôi đã có, đánh thức nó bằng cách nào đó. –

+0

chính xác những gì tôi đang tìm kiếm, cảm ơn! –

14

Trong trường hợp nó giúp bất cứ ai khác: vấn đề đối với tôi là tôi không có django.contrib.sessions ứng dụng không chú thích trong số INSTALLED_APPS của tôi. Uncommenting nó, và rerunning một syncdb đã làm các trick.

+0

Điều này giải quyết trường hợp của tôi về lỗi này. – Chris

+0

Tôi cũng vậy. Lỗi này có thể không liên quan đến việc sử dụng sqlite làm trình điều khiển db. – sapht

8

Khi tôi chạy "manage.py runserver". Nếu tôi chạy khi tôi đường dẫn hiện tại của tôi không phải là trong dự án dir. (Như python /somefolder/somefolder2/currentprj/manage.py runserver) Tôi sẽ có vấn đề như bạn. giải quyết bằng cd vào thư mục dự án trước khi chạy lệnh.

+0

Cảm ơn bạn. Tôi đang chạy djangocms tại #pythonanywhere đồng wsgi máy chủ tôi thêm 'import os nhập khẩu sys path = '/ home/user/dự án' nếu đường không trong sys.path: sys.path.append (đường dẫn) os.chdir (đường dẫn) từ ứng dụng nhập dự án.wsgi' Hy vọng nó sẽ giúp some1 else.1 – JeanPaulDepraz

4

Một nguyên nhân có thể khác có thể đến từ việc sử dụng:

./manage.py testserver 

Và sau đó quý khách đến thăm giao diện quản trị. Điều này sẽ không hoạt động vì trình kiểm tra tạo ra một cơ sở dữ liệu hoàn toàn riêng biệt trong bộ nhớ. Nếu bạn muốn truy cập vào giao diện quản trị, bạn cần sử dụng máy chủ.

9

Trong trường hợp của tôi, vấn đề là tôi đã quên chạy manage.py syncdb sau khi tôi thực hiện một số thay đổi. Khi tôi đã làm điều đó vấn đề đã được giải quyết.

2

có cùng sự cố, độ phân giải của tôi chỉ đơn giản là thêm 'django.contrib.comments' vào INSTALLED_APPS và chạy lại ./manage.py syncdb.

1

tạo giản đồ và thêm tên của nó dưới NAME trong 'cơ sở dữ liệu' quản lý chạy.py syncdb

1

Có thể nó không nhận được đường dẫn của db. Chỉ cần thêm điều này vào settings.py của bạn:

import os 
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) 

#modify your db NAME as below: 
'NAME': os.path.join(PROJECT_PATH,'mysite.sqlite3'), 
+0

Tôi đã chỉnh sửa một chút để dễ đọc hơn - bạn có thể kiểm tra và đảm bảo rằng tôi không thay đổi bất cứ điều gì mà loại bỏ ý nghĩa? – andrewsi

0

Đã xảy ra sự cố này. Khởi động lại postgres và apache2 đã làm điều đó cho tôi. Làm tôi băn khoăn liệu có một loại quy trình sqlite nào còn sót lại không bị xóa cho đến khi bạn không sử dụng các tập tin hay gì đó.

1

Tôi đã thực hiện một số thay đổi trong Mô hình không được di chuyển sang db đúng cách. Sử dụng lệnh

manage.py makemigrations 

khắc phục sự cố của tôi. Tôi hy vọng điều này sẽ giúp một ai đó.

1

Tôi gặp sự cố tương tự đối với quản lý quản trị. Sau khi kiểm tra nhiều lần, hãy chạy "python manage.py migrate" mà không gán tên APP (nhận "Áp dụng tất cả di chuyển: .....), sau đó là máy chủ và lên trên web. Nó hoạt động. Tôi hy vọng điều này có thể hữu ích."

2

sau khi thực hiện bất kỳ thay đổi trong mã, chạy các lệnh sau

manage.py makemigrations 
manage.py migrate 

nó làm việc cho tôi.

+0

Điều này làm việc cho tôi quá ... Mặc dù tôi không có bất kỳ mô hình trong ứng dụng của tôi nhưng tôi đoán chúng ta vẫn nên chạy các lệnh này. –

2

bạn phải di cư không được áp dụng. ứng dụng của bạn có thể không hoạt động đúng cho đến khi chúng được áp dụng. Run 'python quản lý. py migrate 'để áp dụng chúng python manage.py di chuyển Phần này làm việc cho tôi.

+0

Bạn đã cứu tôi rất nhiều đau đầu! Cảm ơn bạn! – Mallika

1

syncdb là lỗi thời thử python manage.py makemigrationspython manage.py migrate giải quyết được vấn đề, và không chấp quên thêm tên ứng dụng là ứng dụng được cài đặt trong settings.py

-1

Chạy lệnh này trong cmd:

Python ./manage.py migrate --all 

Nó nên đi về của bạn db

+0

Có hoặc là python ở đầu hoặc ./ ở đầu. Không phải cả hai. – Vikas

0

chạy này trong vỏ lệnh:

python manage.py migrate 

Điều này đã được khắc phục cho tôi.

0

Tôi gặp sự cố này trong một trường hợp khác. Tôi mới đến Django và nhân bản một kho lưu trữ từ github để thực hành trên đó. Tệp db.sqlite3 cũng đã được sao chép. Nhưng không có django_session trong đó. Khi tôi đã làm

./manage.py showmigrations 

.. Tôi phát hiện ra rằng có một số di chuyển. Nhưng các bảng đã bị mất trong sqlite, vì tôi không bao giờ chạy di chuyển. Vấn đề của tôi đã được giải quyết khi tôi chạy lệnh di chuyển. Hy vọng điều này sẽ giúp django newbies như tôi.

./manage.py migrate 
0

Thêm 'django.contrib.sessions', dòng trong INSTALLED_APPS

Run dưới lệnh từ django shell

python manage.py makemigrations #check for changes 
python manage.py migrate #apply changes in DbSQLite 
python manage.py syncdb #sync with database 

django_session sẽ xuất hiện trong cơ sở dữ liệu với (session_key, session_data , expire_date)

0

Trong trường hợp của tôi, tôi đã phải xóa ' mục nhập của phiên trong bảng django_migrations và chạy quảng cáo và di chuyển sau đó. Điều đó tạo ra bảng django_session.

Các vấn đề liên quan