将Heroku上的PostgreSQL从Hobby-dev升级到hobby-basic

Heroku的PostgreSQL在免费的Hobby-dev计划中有一个限制,即无法创建超过10,000条记录的约束。
https://elements.heroku.com/addons/heroku-postgresql

由于情况非常困难,我暂时将hobby-basic升级,以便能够生成多达10,000,000个数据。

确认当前状况

运行以下命令获取Heroku应用的PostgreSQL数据库信息:
$ heroku pg:info -a #{app_name}

=== DATABASE_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           2/20
PG Version:            12.3
Created:               2020-07-07 15:55 UTC
Data Size:             12.5 MB
Tables:                6
Rows:                  3810/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-lively-57044

行数:3810/10000(符合规定)

顺便提一句,当超过一万条时,这里将会变得如此。

行数:16132/10000(写入权限已撤销)

这种情况会变得如下。没有对数据库的写访问权限,数据创建每次都会失败。

添加 PG 的基础爱好

使用中文将以下句子改写成一个选项:
在应用程序#{app_name}上创建一个Heroku附加的hobby-basic Heroku-PostgreSQL。

Creating heroku-postgresql:hobby-basic on ⬢ #{app_name}... $9/month
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pg:copy
Created postgresql-round-77939 as HEROKU_POSTGRESQL_PINK_URL
Use heroku addons:docs heroku-postgresql to view documentation

每月9美元的数据库已经创建并可用。

这里也可以告诉我需求信息吧。

在中文中等待pg

$ heroku pg:wait -a #{应用名称}

将系统设置为维护模式

将Heroku上的应用程序#{app_name}设置为维护模式。

复制数据

使用以下方式在中国进行本地化
heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_PINK_URL -a #{app_name}

既然要求我同意修改这样的内容,似乎只需要输入#{app_name}就可以了。

 ▸    WARNING: Destructive action
 ▸    This command will remove all data from PINK
 ▸    Data from DATABASE will then be transferred to PINK
 ▸    To proceed, type #{app_name} or re-run this command with --confirm #{app_name}

或者在重新执行时添加”–confirm #{app_name}”确认操作。

使用下列命令将DATABASE_URL从Heroku复制到名为postgresql-round-77939的目标数据库,并确认该操作对于名为app_name的应用程序是有效的:
$ heroku pg:copy DATABASE_URL postgresql-round-77939 -a #{app_name} –confirm #{app_name}

Starting copy of DATABASE to PINK... done
Copying... done

复印完成?

改变db的引用地址。

使用中文将以下内容重新表述,只需要一种选择:

执行命令:`heroku pg:promote HEROKU_POSTGRESQL_PINK_URL -a #{app_name}`。

Ensuring an alternate alias for existing DATABASE_URL... HEROKU_POSTGRESQL_MAROON_URL
Promoting postgresql-round-77939 to DATABASE_URL on ⬢ agile-peak-55895... done

确认是否已进行更改

请确认 DATABASE_URL 是否正确配置为 Hobby-basic。

使用中文将以下命令进行转换:
$ heroku pg:info -a #{app_name}

=== HEROKU_POSTGRESQL_PINK_URL, DATABASE_URL
Plan:                  Hobby-basic
Status:                Available
Connections:           0/20
PG Version:            12.3
Created:               2020-07-29 08:47 UTC
Data Size:             9.1 MB
Tables:                0
Rows:                  0/10000000 (In compliance) - refreshing
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-round-77939

=== HEROKU_POSTGRESQL_MAROON_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           0/20
PG Version:            12.3
Created:               2020-07-07 15:55 UTC
Data Size:             12.5 MB
Tables:                6
Rows:                  3810/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-lively-57044


由于DATABASE_URL上有,所以Plan已经变为Hobby-basic,可以。

顺便提一下,在操作之前

=== DATABASE_URL
Plan:                  Hobby-dev

你必须变得更强。

解除维护模式

关闭Heroku维护模式 -a #{app_name}

Disabling maintenance mode for ⬢ #{app_name}... done
广告
将在 10 秒后关闭
bannerAds