为什么;没有这样的表格:django_session“;当尝试使用管理员时?
我非常确定数据库已经创建,并且我已经正确执行了为什么;没有这样的表格:django_session“;当尝试使用管理员时?,django,Django,我非常确定数据库已经创建,并且我已经正确执行了python manage.py syncdb,但在尝试访问时仍然会遇到此错误。这里有一些细节 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.content
python manage.py syncdb
,但在尝试访问时仍然会遇到此错误。这里有一些细节
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
到sqlite的路径通常是问题所在
'NAME': 'c:/path/to/sqlite.db'
试试这个
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': '',
}
}
并检查操作系统的数据库名称前是否需要+'/'+。按以下顺序执行即可: 首先 然后
因为我们正在运行服务器之前应用所有迁移 进行迁移将解决此问题
'NAME': 'c:/path/to/sqlite.db'
运行以下命令:
python ./manage.py migrate
python ./manage.py makemigrations
SESSION\u引擎
默认情况下使用的是django.contrib.sessions.backends.db
,这使您需要:
django.contrib.sessions
放入INSTALLED\u APPS
列表变量settings.py
SESSION\u引擎
放到django.contrib.sessions.backends.cache
中的settings.py
因此,在您的settings.py
中,如下所示:
...
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
...
顺便说一下,正如文件中所说:
“…简单缓存速度更快,因为它忽略了持久性。”
如果您在任何models.py文件中添加/更新了表,则可能需要在运行服务器之前迁移数据库 在运行“python manage.py runserver”之前运行以下命令:
python manage.py migrate
python manage.py makemigrations
如果运行服务器时未创建数据库或其中的会话表(如果您最近将
admin
应用添加到已安装的应用中),则会发生这种情况。要创建数据库或表,请运行此命令
python manage.py migrate
在django的旧版本中,此命令
python manage.py syncdb
它会提示您进入该错误页面,因为您的数据库甚至没有创建,这导致缺少访问管理页面的必需表
运行以下两个命令:
python3 manage.py migrate
python3 manage.py makemigrations
运行第一个命令实际上会创建数据库,其中包含必要的起始表。我也有同样的问题,这对我来说解决了100%
解决方案来源:@satya的答案你能看到数据库中的表格吗?你用的是什么引擎?我敢打赌你还没有运行syncdb
-运行它能解决问题吗?啊。。我常犯的错误。即使在WINDOWS上,我也跳过了在path中使用前斜杠的部分。peters的方法对我很有效,尽管使用linux并使我的db与manage.py
位于同一目录中,我将第二行更改为ROOT=dirname(abspath(u文件_u+'/..)+'/'
我认为在migrate
命令之后生成迁移将使您再次运行migrate
python3 manage.py migrate
python3 manage.py makemigrations