【发布时间】:2021-10-27 07:05:58
【问题描述】:
我在我的 settings.py 中将我的应用程序连接到我的数据库,然后运行迁移并创建了我的模型 0001_initial.py 文件。但是,当我尝试将这些迁移应用到数据库并创建表时,它说没有要应用的迁移并且它不会创建表。我不知道为什么。
机器 0001_initial.py
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Appear',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('Show', models.CharField(max_length=100)),
('Media', models.CharField(blank=True, choices=[('TV', 'TV'), ('Radio', 'Radio'), ('Youtube', 'Youtube'), ('Podcast', 'Podcast')], max_length=30, null=True)),
('Episode', models.IntegerField()),
('Date', models.DateField(max_length=100)),
('Time', models.TimeField()),
('Producer', models.CharField(max_length=100)),
('Producer_Email', models.EmailField(max_length=254)),
],
),
]
为什么没有创建表?
settings.py
INSTALLED_APPS = [
'machine.apps.MachineConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
}]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'Houston',
'USER': 'postgres',
'PASSWORD': '1234',
'HOST': 'localhost'
}
我已经添加了我的 settings.py 希望这会有所帮助。
【问题讨论】:
-
你能分享一下你的数据库设置吗?你确定它指向的是真实的数据库,而不是 SQLite 的吗?
-
您可能没有在 settings.py 中正确配置您的连接。您是否更改了默认的 sqlite 数据库?你把它改成什么了?还要从 settings.py 中放入数据库连接器的代码
-
这是您第一次将迁移应用到数据库吗?您完全确定尚未应用迁移吗?如果此应用程序有另一个使用该名称的迁移,django 将无法识别有变化
-
确保您拥有正确的文件夹和文件结构。您的 django 应用程序必须包含
migrations文件夹,其中包括__init__.py文件和0001_initial.py文件。此外,请确保您已在项目设置的应用程序中声明您的应用程序。然后,运行python manage.py showmigrations以检查已应用哪些迁移。然后,运行python manage.py makemigrations和python manage.py migrate分别生成和应用迁移。 -
这听起来很可疑,因为这是您第一次连接到 db 并且它说没有要执行的迁移。通常,当您运行第一个“迁移”命令时,您至少会迁移内容类型和其他内置组件。所以它似乎与模型定义没有联系,而是联系。
标签: django postgresql django-models migration database-migration