在heroku中续集迁移
Posted
技术标签:
【中文标题】在heroku中续集迁移【英文标题】:sequelize migrations in heroku 【发布时间】:2014-05-03 05:44:20 【问题描述】:谁能给我一些完整的nodejs迁移续集示例,因为实际文档本身并没有给出如何完成的完整示例。
或者可以给出一些其他可以使用的模块的完整示例以及如何在heroku中使用的最佳实践?
谢谢
【问题讨论】:
【参考方案1】:当你通过运行在本地初始化 sequelize 时:
sequelize -i
会创建一个迁移文件夹、配置文件夹和配置文件夹内的 config.json。该 json 文件是您设置应用程序环境的位置。这是一个 config.json 文件的示例。
"development":
"username": "postgres",
"password": "password",
"database": "dbname",
"host": "100.0.0.0",
"dialect":"postgres",
"protocol":"postgres",
"port":"xxxx"
,
"staging":
"username": "dbusername",
"password": "dbpassword",
"database": "db",
"host": "host",
"dialect":"postgres",
"protocol":"postgres",
"port":"xxxx"
,
"production":
"username": "dbusername",
"password": "dbpassword",
"database": "db",
"host": "dbhost",
"dialect":"postgres",
"protocol":"postgres",
"port":"xxxx"
生产对象是您设置 heroku 生产应用程序数据库变量的地方。您可以通过在命令行中运行以下命令来访问它们:
heroku config --app production-app-name
所有变量都将在您设置的 database_url 配置变量中。
当您准备好运行迁移时,您在命令行中运行的只是:
heroku run sequelize db:migrate --env production -m --app production-app-name.
--env 将是您要迁移的 config.json 中的任何数据库对象。
使用这个方便的续集功能,而不是在文件中嵌入密码:
"production":
"use_env_variable": "DATABASE_URL"
【讨论】:
谢谢。不过,迁移中不需要 -m。 执行此操作时出现 SSL 错误,请问在哪里添加 ssl=true 选项? 不幸的是,这意味着您每次使用新迁移部署更改时都必须运行该命令。【参考方案2】:Since March 2019, Heroku 在每次部署后运行构建 npm 脚本。改进上面令人惊叹的评论,您可以向它添加 sequelize 迁移(位于 package.json 文件中,位于根目录中):
...
"scripts":
...
"build": "sequelize db:migrate --env production && <other stuff to do before run the app>"
...
【讨论】:
它对我不起作用:(【参考方案3】:您可以使用 Procfile 并将其放在顶部。
release: npx sequelize-cli db:migrate
然后您将需要一个 .sequelizerc 文件来定义您的迁移位置。
对于配置,您可以将其用于 ssl。
production:
use_env_variable: 'DATABASE_URL',
dialect: 'postgres',
protocol: 'postgres',
ssl: true,
dialectOptions:
ssl:
require: true,
rejectUnauthorized: false,
,
,
【讨论】:
以上是关于在heroku中续集迁移的主要内容,如果未能解决你的问题,请参考以下文章