我知道关于这个问题有很多问题,我查看了解决方案,但不幸的是,没有一个对我有用。
我创建了一个名为“usermanagement”的新应用程序,并向该应用程序添加了一个模型。添加模型后,我在设置中将用户管理添加到 INSTALLED_APPS。然后我运行 python manage.py makemigrations 和 python manage.py migrate。这一切都很好!我也尝试过使用 app-name 运行迁移。
当我尝试使用以下命令将模型的新实例添加到 Python-Django shell 中的数据库时,问题就开始了:
>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
django.db.utils.ProgrammingError:关系“usermanagement_clubofficial”不存在第1行:插入“usermanagement_clubofficial”(“姓名”,“电子邮件”)...
下面是模型代码:
class ClubOfficial(models.Model):
name = models.CharField(max_length=254)
email = models.EmailField(max_length=254)
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我使用 postgresql,并尝试重新启动服务器。程序中的其他应用程序也运行得很好,只是 usermanagemenet 有这个问题。
有谁知道会出什么问题?
感谢您的时间!
注意:我现在用不同的名称创建了一个新的应用程序,从用户管理复制粘贴的东西,一切正常。我认为问题可能是在我再次创建之前删除了一个名为 usermanagement 的应用程序之前。也许这以某种方式弄乱了数据库。
Man*_*ssi 15
我遇到了这个。在我来说,我有一个以前的工作Django应用程序,还没有转移到生产,所以我删除一切都在我的应用程序的迁移文件夹,然后使用Django扩展我擦PostgreSQL数据库,并与缓存的文件:
./manage.py clear_cache
./manage.py clean_pyc
./manage.py reset_schema
./manage.py reset_db
# then deleted all files (including __init__.py) from my app's migrations folder.
Run Code Online (Sandbox Code Playgroud)
我确认我的 postgresql 数据库没有表。然后我跑了:
./manage.py makemigrations
./manage.py migrate
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
No changes detected
./manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
(about 11 more lines of output here which are similar)
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我的模型名称在迁移中无处可见。我在我的 postgresql 数据库中打印了这些表,并且 Widget 和 Section 表都丢失了。运行应用程序给了我这个错误(我用'app'和'model'代替了他们的真实姓名):
ProgrammingError at /my_path
relation "app_model" does not exist
LINE 1: ..."."my_field", "app_model"."my_field" FROM "appname...
Run Code Online (Sandbox Code Playgroud)
所以模型的表没有在数据库中创建。我的应用程序的迁移文件夹也完全是空的。解决方案是在__init__.py我的应用程序的迁移文件夹中添加一个空文件夹,然后运行makemigrations后能够在该文件夹中创建和保存迁移文件。然后可以使用migrate. 您可以通过在 migrations/ 文件夹中makemigrations使用和不使用运行来为自己测试__init__.py。
这个解决方案不是我的,而是用户Ljubitel在另一篇文章中给出的,但它不是那里接受的答案,但接受的答案对我不起作用,所以我在这里写了这个解决方案,希望能帮助其他人。
我遇到了同样的问题,但我所要做的就是运行
$ python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)
和
$ python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20163 次 |
| 最近记录: |