将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