我找到了几个有这个标题的主题,但他们的解决方案都没有为我工作。我在我的服务器上运行了两个Django站点,两个都通过Apache在我的Nginx前端(用于静态文件)的两个端口上使用不同的虚拟主机。一个站点使用MySql并运行得很好。另一个使用Sqlite3并在标题中获取错误。
我下载了sqlite.exe的副本并查看了mysite.sqlite3(此目录中的SQLite数据库)文件,确实有一个包含有效数据的django_session表。我的system32中有sqlite.exe,Python路径中有site-packages文件夹。
以下是我的settings.py文件的一部分:
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,因为它总是给我带来一些麻烦。无论如何,我只是为了了解它而使用它。我没有压倒性的理由为什么要使用它。但同样,只是为了我的启发,有谁知道这个问题是什么?我不想放弃。
答案 0 :(得分:47)
可能是服务器使用的工作目录与manage.py
命令不同。由于您提供了sqlite数据库的相对路径,因此它在工作目录中创建。尝试使用绝对路径,例如:
'NAME': '/tmp/mysite.sqlite3',
请记住,您必须再次运行./manage.py syncdb
或将当前数据库与现有表格一起复制到/tmp
。
如果它解决了错误消息,您可以寻找比/tmp
更好的地方: - )
答案 1 :(得分:14)
如果它可以帮助其他人:我的问题是我的django.contrib.sessions
中没有取消评论INSTALLED_APPS
应用。取消注释,并重新运行syncdb
就可以了。
答案 2 :(得分:12)
在我的情况下,问题是我做了一些更改后忘了运行manage.py syncdb
。当我这样做时,问题就解决了。
答案 3 :(得分:11)
在代码中进行任何更改后,运行以下命令
manage.py makemigrations
manage.py migrate
它对我有用。
答案 4 :(得分:8)
当我运行“manage.py runserver”时。如果我运行时我的当前路径不在项目目录中(例如python /somefolder/somefolder2/currentprj/manage.py runserver)我会遇到像你这样的问题。在运行命令之前通过cd解决项目目录。
答案 5 :(得分:6)
在命令shell中运行:
python manage.py migrate
这对我来说很有用。
答案 6 :(得分:5)
另一个可能的原因可能来自使用:
./manage.py testserver
然后访问管理界面。这不起作用,因为testserver在内存中创建一个完全独立的数据库。如果要访问管理界面,则需要使用runserver。
答案 7 :(得分:3)
发生这种情况的原因可能是迁移失败
•执行以下命令:
python manage.py showmigrations
python manage.py migrate --fake your_app_name zero
python manage.py showmigrations
•如果您正在本地计算机上运行,则从应用程序的迁移文件夹中删除名为0001. init .py的文件
•执行以下命令:
python manage.py makemigrations
python manage.py migrate
•然后运行django服务器:
python manage.py runserver
答案 8 :(得分:2)
有同样的问题,我的解决方法是简单地将'django.contrib.comments'添加到INSTALLED_APPS并再次运行./manage.py syncdb
。
答案 9 :(得分:2)
如果有待处理的会话迁移,可能会发生这种情况。
您有17个未应用的迁移。您的项目可能无法正常工作 直到您为应用应用迁移:管理员,身份验证,内容类型, 会议。
您可以使用以下命令来运行迁移:
python manage.py migrate
这将解决问题。
答案 10 :(得分:2)
您有未应用的迁移。在应用之前,您的应用可能无法正常运行。 运行' python manage.py migrate'应用它们。 python manage.py migrate这个对我有用。
答案 11 :(得分:1)
也许您有一些未迁移的文件。
Run
Python manage.py makemigration appname
python manage.py migrate appname
python manage.py runserver
但是如果错误仍然继续 运行 python manage.py migrate 运行服务器
答案 12 :(得分:1)
我发现这就是迁移的全部。
python manage.py makemigrations APPNAME
当更改为不同的虚拟主机(例如 windows 到 linux,反之亦然)时,答案会停止
答案 13 :(得分:1)
创建架构并在“数据库”中的NAME下添加其名称 运行manage.py syncdb
答案 14 :(得分:1)
我有类似的管理员管理问题。经过几次检查后,运行" python manage.py migrate"没有分配APP的名称(获取"应用所有迁移:.....),然后在网络上运行服务器。有效。我希望这会有所帮助。
答案 15 :(得分:1)
可能它没有获得db的路径。只需将其添加到settings.py:
即可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'),
答案 16 :(得分:1)
我在Model中做了一些更改,但没有正确迁移到db。使用命令
manage.py makemigrations
解决了我的问题。我希望这会对某人有所帮助。
答案 17 :(得分:1)
syncdb
已过时尝试python manage.py makemigrations
而python manage.py migrate
解决了问题,并且忘记添加应用名称是settings.py
中已安装的应用
答案 18 :(得分:0)
这对我有用。
来自https://docs.djangoproject.com/en/2.2/topics/http/sessions/
使用数据库支持的会话-
如果要使用数据库支持的会话,则需要在INSTALLED_APPS设置中添加“ django.contrib.sessions”。
配置完安装后,运行 manage.py migration 安装存储会话数据的单个数据库表。
答案 19 :(得分:0)
很简单,只需运行以下命令
python ./manage.py migrate
python ./manage.py makemigrations AppName
答案 20 :(得分:0)
只需运行此命令
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
答案 21 :(得分:0)
在终端或cmd提示符下运行命令
python manage.py runserver
然后
python manage.py createsuperuser
然后通过设置用户名和密码来创建超级用户,然后您将能够看到管理员登录页面。
答案 22 :(得分:0)
也有这个问题。 重新启动postgres和apache2为我做了这件事。让我想知道是否有某种sqlite进程被删除,直到你摆弄文件或其他东西。
答案 23 :(得分:0)
更改代码时,请尝试以下命令
manage.py makemigrations
manage.py migrate
答案 24 :(得分:0)
如果您厌倦了使用makemigrations进行迁移,但是错误是相同的,则不存在此类表django_session。然后看看您使用会话或调用它的某个地方或其他地方编写代码。只需注释您正在使用会话的代码,然后分别运行命令makemigrations和migration。它100%解决了您的问题。此错误的原因是您删除了Migrations文件夹和数据库文件,这就是您收到此错误的原因。请随时问问题是否无法解决
答案 25 :(得分:0)
在某些情况下,您可能会收到此错误,因为在创建超级用户之前您忘记运行查询python manage.py migration
答案 26 :(得分:0)
我遇到了同样的问题,所以我跑了
heroku run ls
,发现服务器中缺少db.sqlite3
文件。
就我而言,这是因为我通过将其添加到.gitignore
文件中而将其豁免。
答案 27 :(得分:0)
对我来说,是我更新了settings.py
,运行了迁移,但是systemd进程仍在使用SQLite
,因为我没有重新加载它。进行systemctl restart service_name
解决了这个问题。
答案 28 :(得分:0)
在我的情况下,我不得不删除'会话'在django_migrations表中输入并运行makemigrations并在之后进行迁移。这创建了django_session表。
答案 29 :(得分:0)
在INSTALLED_APPS
中添加'django.contrib.sessions',
行
从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将出现在(session_key, session_data , expire_date)
答案 30 :(得分:0)
我在不同的场景中遇到过这个问题。我是Django的新手,并从github克隆了一个存储库来练习它。 db.sqlite3文件也被复制了。但是里面没有django_session。当我做的时候
./manage.py showmigrations
..我发现有一些迁移。但是sqlite中缺少表格,因为我从未运行过迁移。我运行migrate命令时解决了我的问题。希望这能帮助像我这样的django新手。
./manage.py migrate
答案 31 :(得分:-1)
只需运行您的迁移:
python manage.py migrate
答案 32 :(得分:-2)
在cmd:
中运行此命令Python ./manage.py migrate --all
应该出现在 db
上