我的情况非常奇怪。
问题: 我在这个post中描述了原始问题,但总结一下:
使用该项目一段时间后,makemigrations停止为我工作。 (是的我已经把一切都设置好了,设置还可以,...请参阅我之前发表的评论)
我决定我无法解决这个问题,所以我会重新开始。 (这就是为什么git适用于:D)
所以,我删除了我的django项目,我创建了新的虚拟环境,我还在postgres中创建了新的数据库和新用户。
我更新配置文件中的新数据库参数并尝试运行初始makemigrations但没有luch。仍然说没有新的迁移可用。
我很绝望,因为我无法在项目上工作,所以任何解决方案都可以: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'],
}
}
答案 0 :(得分:0)
经过很长时间,我找到了解决方案,这实际上是我的错误。 我会为那些犯类似错误的人发布答案: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',
}
问题是如果声明如下。出于某种原因,他明白这一切都是真的。所以程序迁移sqlite内部测试数据库。
我需要用
解决这个问题if ('test' in sys.argv) or ('jenkins' in sys.argv):
这解决了第一个问题,即在进行迁移时它会留下空数据库。 在此修复之后,migrate使用默认的Django表填充数据库,但不使用我的表。
对此的修复是在admin.py文件中导入models.py。
import connectors.models
非常感谢,每个人都给我很好的提示,找到解决方案。