本地迁移不在heroku上显示

3bygqnnd  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(113)

我知道这个问题以前有人问过,但是,我的问题和那些问题有点不同。我正在做一个项目,在不同的应用程序中为不同的模型添加了一些属性,我逐渐地进行了迁移。一切都很好。我在一个分叉的公共分支上创建了一个PR,我的客户将我的分支合并到了一个测试分支中。
现在的问题是Heroku无法识别远程服务器上的迁移。
我在本地开发环境中使用sqlite3,在production environment中使用PostgreSQL
Heroku是为生产环境中的sqlite3还是PostgreSQL服务?或者主要问题是什么?

    • 注意**:我被添加为协作者,无法将本地更改拉到远程服务器,因此无法将本地更改部署到远程服务器。
    • 更新**

git remote -v结果

heroku  https://git.heroku.com/tarot-testing.git (fetch)
heroku  https://git.heroku.com/tarot-testing.git (push)
master  https://github.com/abubakarA-Dot/tarot_juicer.git (fetch)
master  https://github.com/abubakarA-Dot/tarot_juicer.git (push)
origin  https://github.com/abubakarA-Dot/tarot_juicer.git (fetch)
origin  https://github.com/abubakarA-Dot/tarot_juicer.git (push)
upstream        https://github.com/enoren5/tarot_juicer.git (fetch)
upstream        https://github.com/enoren5/tarot_juicer.git (push)
vc6uscn9

vc6uscn91#

@djangodeveloper和我在同一个团队中,在同一个project on GitHub上工作。
到目前为止,在评论中讨论的在Heroku上迁移数据库的三种方法包括:
1.运行$ heroku run python manage.py migrate
1.向Procfile添加一些参数
1.安装第三方(非官方)构建包
下面是另一个需要考虑的方法(我使用的方法):
1.在本地运行远程AWS Postgres数据库。
就像跑步一样简单:

(local venv) $ export DATABASE_URL='postgres://USER:PASSWORD@HOST:PORT/NAME'

显示配置变量后,您可以在Heroku Jmeter 板中找到包含所有正确变量的DATABASE_URL。要使其正常工作,您需要做的就是将配置变量复制并粘贴到shell中的引号内。要更深入地了解如何使用此技术,您可以查看我们GitHub项目的www.example.com中的文档README.md,标题为:“#3.在本地处理数据库远程示例”。使用这种技术,在本地开发环境中导出数据库后,我运行:

(local venv) $ python manage.py migrate
Database Config: {'default': {'NAME': <redacted>, 'USER': <redacted>, 'PASSWORD': <redacted>, 'HOST': '<redacted>', 'PORT': 5432, 'CONN_MAX_AGE': 600, 'ENGINE': 'django.db.backends.postgresql_psycopg2'}}
Operations to perform:
  Apply all migrations: accounts, admin, auth, contenttypes, essays, generators, landings, sessions
Running migrations:
  Applying essays.0007_auto_20221107_2032... OK
  Applying essays.0008_auto_20221108_0627... OK
  Applying generators.0004_generator_is_published... OK
  Applying generators.0005_alter_generator_is_published... OK
  Applying landings.0005_auto_20221107_1312... OK
  Applying landings.0006_auto_20221108_0627... OK

正如你在底部的输出中所看到的,数据库现在已经成功迁移了。在Django管理面板中,我可以看到所有的数据都被保存了。虽然generators Web应用程序有一些新的问题需要在OP最初的问题范围之外单独处理。staging版本的网站现在运行得很好。
早在9月份Heroku就开始通知他们的用户免费的PostgreSQL和Hobby dynos正在逐步淘汰,我主动将我们的stagingproduction PostgreSQL数据库迁移到Basic层,每个层每月花费$9.00。我没有丢失任何数据,到目前为止过渡是无缝的。
虽然评论部分的OP分享了他在另一个Heroku项目中的经验,PostgreSQL变得不可用并遇到数据丢失,但我可以确认,这个项目从来就不是这样的。
为此,请看以下输出:

$ heroku pg:info -a tarot-testing
=== DATABASE_URL, COPPER_TESTING_URL
Plan:                  Basic
Status:                Available
Connections:           8/20
PG Version:            14.6
Created:               2022-10-02 13:50 UTC
Data Size:             11.1 MB/10.00 GB (In compliance)
Tables:                28
Rows:                  351/10000000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Billing App:           tarot-prod
Add-on:                postgresql-lorem-2

如您所见,它是在10月2日创建的(早在11月底的转换截止日期之前),并且填充了一些数据。
下面是我们项目的Heroku Jmeter 板的屏幕截图,进一步证明了我们的PostreSQL是在线的,并且配置正确:

相关问题