Django: no such table: django_session
我已经找到了这个标题的几个主题,但他们的解决方案都没有为我工作。我在我的服务器上运行了两个Django站点,两个都通过Apache在我的Nginx前端(用于静态文件)的两个端口上使用不同的虚拟主机。一个站点使用MySql并运行得很好。另一个使用Sqlite3并在标题中获取错误。
我下载了sqlite.exe的副本并查看了mysite.sqlite3(此目录中的SQLite数据库)文件,确实有一个包含有效数据的django_session表。我的system32中有sqlite.exe,Python路径中有site-packages文件夹。
这是我的settings.py文件的一部分:
1 2 3 4 5 6 7 8 9 10 11 12 | 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. } } |
我确实使用了python manage.py syncdb而没有错误,只是一个"No Fixtures"评论。
有没有人有任何想法可能会在这里发生什么?我正在考虑将所有内容转移到我的旧朋友MySql并忽略Sqlite,因为它总是给我带来一些麻烦。无论如何,我只是为了了解它而使用它。我没有压倒性的理由为什么要使用它。但同样,只是为了我的启发,有谁知道这个问题是什么?我不喜欢放弃。
可能是服务器使用与
1 | 'NAME': '/tmp/mysite.sqlite3', |
请记住,您必须再次运行
如果它解决了错误消息,您可以寻找比
在对代码进行任何更改后,运行以下命令
1 2 | manage.py makemigrations manage.py migrate |
它对我有用。
万一它可以帮助其他人:对我来说问题是我没有在我的
在我的情况下,问题是我做了一些更改后忘了运行
当我运行"manage.py runserver"时。如果我运行时我的当前路径不在项目目录中(例如python /somefolder/somefolder2/currentprj/manage.py runserver)我会遇到像你这样的问题。在运行命令之前通过cd解决项目目录。
在命令shell中运行它:
1 | python manage.py migrate |
这对我来说很有用。
另一个可能的原因可能来自使用:
1 | ./manage.py testserver |
然后访问管理界面。这不起作用,因为testserver在内存中创建一个完全独立的数据库。如果要访问管理界面,则需要使用runserver。
有同样的问题,我的决议是简单地将'django.contrib.comments'添加到INSTALLED_APPS并再次运行
您有未应用的迁移。在应用之前,您的应用可能无法正常运行。
运行'python manage.py migrate'来应用它们。
python manage.py migrate这个对我有用。
我在Model中做了一些更改,但没有正确地迁移到db。使用命令
1 | manage.py makemigrations |
解决了我的问题。我希望这会对某人有所帮助。
可能它没有得到数据库的路径。只需将其添加到您的settings.py:
1 2 3 4 5 | 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'), |
创建一个模式,并在"数据库"中的NAME下添加其名称
运行manage.py syncdb
我有类似的管理员管理问题。经过几次检查后,运行"python manage.py migrate"而不指定APP的名称(获取"应用所有迁移:....."),然后运行服务器并在网络上运行。它工作正常。我希望这可以提供帮助。
这对我有用。
来自https://docs.djangoproject.com/en/2.2/topics/http/sessions/
使用数据库支持的会话 -
如果要使用数据库支持的会话,则需要将"django.contrib.sessions"添加到INSTALLED_APPS设置中。
配置安装后,运行manage.py migrate以安装存储会话数据的单个数据库表。
我在不同的场景中遇到过这个问题。我是Django的新手,并从github克隆了一个存储库来练习它。 db.sqlite3文件也被复制了。但是里面没有django_session。我什么时候做的
1 | ./manage.py showmigrations |
..我发现有一些迁移。但是sqlite中缺少表格,因为我从未运行过迁移。我运行migrate命令时解决了我的问题。希望这能帮助像我这样的django新手。
1 | ./manage.py migrate |
在INSTALLED_APPS中添加
从django shell运行以下命令
1 2 3 | python manage.py makemigrations #check for changes python manage.py migrate #apply changes in DbSQLite python manage.py syncdb #sync with database |
django_session将出现在
也有这个问题。重新启动postgres和apache2为我做了。让我想知道是否有某种sqlite进程遗留下来,直到你摆弄文件或东西时才删除。
就我而言,我不得不删除django_migrations表中的'sessions'条目并运行makemigrations并在之后进行迁移。这创建了django_session表。
对我而言,我更新了
我有同样的问题所以我跑了
并发现服务器中缺少
就我而言,这是因为我通过在
并且可能是您遇到此错误的情况,因为您在创建超级用户之前忘记运行查询python manage.py migrate
如果你厌倦了使用makemigrations和迁移,但错误是相同的没有这样的表django_session。然后只是看看你在某处或另一个使用会话或调用它的代码。只需注释使用会话的代码,然后分别运行命令makemigrations和migrate。它100%解决您的问题。此错误的原因是您删除了迁移文件夹和数据库文件,这是您收到此错误的原因。可以随意询问问题是否解决
在cmd中运行此命令:
1 | Python ./manage.py migrate --all |
它应该出现在您的数据库中