我想将django项目部署到生产环境中,并将其与新的空数据库关联,我按如下方式执行:
但只创建了与auth相关的表(如auth_user
,auth_group
...),没有为我的应用程序创建数据库表
如何针对这种情况迁移到我的项目的新数据库?
答案 0 :(得分:5)
- 删除了我的应用
下的迁移文件夹 醇>
这是您的错误,您删除了迁移 - 包括初始迁移。因此,当您转到makemigrations
时,您尚未获得初始迁移。
因此,您需要运行makemigrations <app_name>
以至少获得初始迁移。
如果您要再次执行此操作,请不要删除迁移,只需更改数据库设置然后迁移。
答案 1 :(得分:5)
首先,您不应该删除迁移。现在,再次进行所有已删除的迁移。
python manage.py makemigrations app_name
对已删除迁移的所有应用执行此操作。 现在,将您的新数据库添加到settings.py。不要删除旧的。例如,如果要添加MySQL数据库,则应在settings.py中将以下内容添加到DATABASES字典中:
'new': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'databasename',
'USER': 'databaseusername',
'PASSWORD': 'databasepassword',
'HOST': 'localhost',
'PORT': '3306',
}
我已将数据库命名为“新”。现在我们有两个数据库“ default”和“ new”。现在,您必须通过在新数据库上运行迁移来在新数据库中创建表:
python manage.py migrate --database=new
如果要将数据传输到新数据库,则可以执行以下附加步骤。首先,清除新数据库:
python manage.py flush --database=new
现在将数据从旧数据库导出到json文件中:
python manage.py dumpdata>data.json
将此数据导入新数据库:
python manage.py loaddata data.json --database=new
现在您可以删除“默认”数据库并将“新”数据库重命名为“默认”。
此答案中提到的过程取自my blog。
答案 2 :(得分:0)
只需检查select distinct t1.* from user_profiles t1
left join user_friends t2 on(t1.id = t2.user_id)
where t1.id = 1997 and
(user_privacy='false' or t2.friends_id = 2001)
命令的输出,如果显示未检测到任何更改,则需要检查是否已在python manage.py makemigrations
INSTALLED_APPS = []
文件中添加该应用因为你已经删除了迁移文件夹而成为问题。因为如果有任何数据库连接错误,它会在执行makemigrations时向您显示。
答案 3 :(得分:0)
如果您的数据库有新名称,即不是&#34;默认&#34;,则需要将其指定为b = df.B.str.extract(r'\[(.*)\]', expand=False).str.split(',', expand=True).fillna(np.nan)
df['D'] = pd.DataFrame(b.apply(lambda x: tuple(x.values))).applymap(list)
:
migrate