gpt4 book ai didi

python - 在 django 中重新启动 postgres 连接

转载 作者:行者123 更新时间:2023-11-29 13:47:00 24 4
gpt4 key购买 nike

我这里的情况很奇怪。

问题:我在这个 post 中描述了原始问题,但总结起来:

在使用该项目一段时间后,makemigrations 停止为我工作。(是的,我已经设置一切正常,设置正常,..请参阅我在上一篇文章中的评论)

我决定我无法解决这个问题,所以我会重新开始。 (这就是为什么 git 是 :D 的原因)

所以,我删除了我的 django 项目,创建了新的虚拟环境,还在 postgres 中创建了新的数据库和新的用户。

我在我的配置文件中更新了新的数据库参数并尝试运行初始 makemigrations 但没有任何进展。仍然说没有新的迁移可用。

我很绝望,因为我不能在这个项目上工作,所以任何解决方案都可以:D

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py makemigrations connectors environment=local
I will use local settings.
No changes detected in app 'connectors'

我所有的迁移

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py showmigrations environment=local
I will use local settings.
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
connectors
(no migrations)
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial

午餐迁移时

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py migrate --fake-initial environment=local
I will use local settings.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.

有趣的是,如果我关闭 postgres 数据库,我仍然会在终端中看到相同的文本。我想我应该会遇到一些连接错误。

数据库配置yaml

database:
port: 5432
host: 'localhost'
user: 'user1'
password: 'user_password_123!'
db: 'db1'

和我的设置文件:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': CONFIG['database']['db'],
'USER': CONFIG['database']['user'],
'PASSWORD': CONFIG['database']['password'],
'HOST': CONFIG['database']['host'],
'PORT': CONFIG['database']['port'],
}
}

最佳答案

很多小时后,我找到了解决方案,这实际上是我的错误。我会为那些犯类似错误的人发布答案:D

事实上,@Alasdair 和@AdamBarnes 是对的。我没有连接到新数据库,但不是因为数据库设置错误(主机、端口、用户名、数据库...)

我在 settings.py 中的内容是数据库设置和单元测试数据库。

# Databases start
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': CONFIG['database']['db'],
'USER': CONFIG['database']['user'],
'PASSWORD': CONFIG['database']['password'],
'HOST': CONFIG['database']['host'],
'PORT': CONFIG['database']['port'],
}
}

if 'test' or 'jenkins' in sys.argv:
DATABASES['default'] = {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'test_database',
}

问题是下面的 if 语句。出于某种原因,他明白这总是正确的。于是程序迁移sqlite内测数据库。

我需要用

来解决这个问题
if ('test' in sys.argv) or ('jenkins' in sys.argv):

这解决了第一个问题,即在进行迁移时它会留下空数据库。在这个修复之后,迁移是用默认的 Django 表填充数据库,而不是用我的表。

解决方法是将我的 models.py 导入到 admin.py 文件中。

import connectors.models

非常感谢大家给我很好的提示,找到解决方案。

关于python - 在 django 中重新启动 postgres 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com