无法在 Heroku 上运行迁移 Postgres
Posted
技术标签:
【中文标题】无法在 Heroku 上运行迁移 Postgres【英文标题】:Failing to run migration Postgres on Heroku 【发布时间】:2021-09-25 07:18:31 【问题描述】:好吧,当我进入 heroku bash 并尝试运行 npx typeorm migration:run
时,它只会给我一个错误:
奇怪的是,当 DATABASE 在本地主机上时,它在本地工作,就像 .env 文件中这样:
DATABASE_URL=postgres://postgres:docker@localhost:5432/gittin
这是我的ormconfig.js
:
module.exports =
"type": "postgres",
"url": process.env.DATABASE_URL,
"entities": ["dist/entities/*.js"],
"cli":
"migrationsDir": "src/database/migrations",
"entitiesDir": "src/entities"
是的,我在应用中添加了 heroku postgres 插件。
PS:如果需要,这是项目的repo:https://github.com/joaocasarin/gittin
【问题讨论】:
你见过this吗? 我还找到了this。我认为您必须编辑ormconfig.js
并添加:ssl: process.env.NODE_ENV === 'production'
。仅当 Node.js 环境是 production 时才启用 ssl,从而允许在 Heorku 中进行安全连接,并且“用于本地开发的非安全连接。
嗨@CarloCorradini,我看不到第一个链接对我有什么帮助,因为我没有找到conf文件,而且连接仍然会请求激活SSL...关于您的第二条评论,我尝试了您的方式,但在我研究时,ormconfig.js 中的 ssl
字段不应是布尔值,它应该是这样的对象:gist.github.com/joaocasarin/85c29ca545ddc77cafcd8a5aa41af49a
它有效,我在许多项目中使用过ssl
:)。例如,看看here。 PS:你试过吗?
@CarloCorradini 是的,我试过了,这是新的错误:user-images.githubusercontent.com/48847394/…
【参考方案1】:
当我在 cmets 中与 Carlo 讨论时,我必须在 ormconfig.js
中添加 ssl
属性,但不仅要在环境为 production
时将其设置为 true。所以根据this,我必须在生产模式下输入 rejectUnauthorized: false
,而不是在非生产模式下。
所以ormconfig.js
现在是这样的:
module.exports =
"type": "postgres",
"ssl": process.env.NODE_ENV === 'production' ? rejectUnauthorized: false : false,
"url": process.env.DATABASE_URL,
"entities": ["dist/entities/*.js"],
"cli":
"migrationsDir": "src/database/migrations",
"entitiesDir": "src/entities"
【讨论】:
既然这是解决方案,请将其标记为正确答案:) @CarloCorradini 我等了 2 天才能将其选为正确,感谢您记住我!以上是关于无法在 Heroku 上运行迁移 Postgres的主要内容,如果未能解决你的问题,请参考以下文章
我的新迁移将破坏我在 heroku (postgres) 上的数据库
如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?
使用Heroku Run Console时,LoadError无法找到dm-postgres-adapter