尝试使用admin时为什么“没有这样的表:django_session”?

时间:2011-10-21 02:49:57

标签: django

我很确定数据库已经创建并且我已正确执行了python manage.py syncdb,但在尝试访问http://127.0.0.1:8000/admin/时仍遇到此错误。以下是一些细节。

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/

Django Version: 1.3.1
Python Version: 2.7.1
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'blog',
 'django.contrib.admin']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')

Exception Type: DatabaseError at /admin/
Exception Value: no such table: django_session

8 个答案:

答案 0 :(得分:3)

sqlite的路径通常是问题所在。

'NAME': 'c:/path/to/sqlite.db'

答案 1 :(得分:2)

试试这个

from os.path import dirname, abspath
ROOT = dirname(abspath(__file__)).replace('\\', '/') + '/'

print "self.__name__: " + __name__
print "self.__file__: " + __file__
print "ROOT: " + ROOT

import django
print "django.__path__: " 
print (django.__path__)

# Contact for error messages etc. - dont forget the ',' after the first entry

ADMINS = (('dev', 'dev@example.com'),)
MANAGERS = ADMINS

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',        
'NAME': ROOT + 'project.db',                      
    'USER': '',    'PASSWORD': '',
    'HOST': '',    'PORT': '',                      
}
}

并在操作系统的数据库名称之前检查是否需要+'/'+。

答案 2 :(得分:1)

进行迁移将解决问题。

运行以下命令:

python ./manage.py migrate

python ./manage.py makemigrations

答案 3 :(得分:0)

django.contrib.sessions.backends.db 它默认使用 django.contrib.sessions,这让您需要:

  1. INSTALLED_APPS 放入 settings.py 中的 SESSION_ENGINE 列表变量
  2. 您必须迁移数据库

如果您不想这样做,只需将 django.contrib.sessions.backends.cache 放在 settings.py 中的 settings.py

所以,在你的 ... SESSION_ENGINE = 'django.contrib.sessions.backends.cache' ... 中是这样的:

{{1}}

顺便说一句,如文档中所说:

<块引用>

'..简单缓存更快,因为它忽略了持久性。'

你可以在这个link

答案 4 :(得分:0)

如果您在任何 models.py 文件中添加/更新了表,您可能需要在运行服务器之前迁移数据库。

在运行“python manage.py runserver”之前运行以下命令:

python manage.py migrate
python manage.py makemigrations 

答案 5 :(得分:0)

当您在没有创建数据库或其中没有会话表的情况下运行服务器时会发生这种情况(以防您最近将 admin 应用程序添加到您的 INSTALLED_APPS)。为了创建数据库或表运行此命令。

python manage.py migrate

在旧版本的 django 中是这个命令

python manage.py syncdb

答案 6 :(得分:0)

它提示您进入该错误页面,因为您的数据库甚至还没有创建,这导致缺少访问管理页面的必需表。

运行以下两个命令:

python3 manage.py migrate

python3 manage.py makemigrations

运行第一个命令实际上会创建您的数据库,其中包含必要的起始表。我遇到了同样的问题,这对我来说 100% 解决了。

解决方案来源:@satya 的回答

答案 7 :(得分:-1)

按以下顺序执行工作正常:

第一

data = pd.DataFrame({'X': [1, 2, 3, 4, 5], 'Y': [10,20,30,40,50]})

for each_line in data.index:
    z = data['X'].loc[each_line] + data['Y'].loc[each_line]
    for i in range(1,1001,1):
        z +=10
    print(z)

Output
10011
10022
10033
10044
10055

然后

 python manage.py migrate

因为我们在运行服务器之前应用所有迁移。