postgresql - strapi database.js/多个数据库配置

标签 postgresql sqlite heroku strapi headless-cms

  1. 如果我在 database.js 中运行 sqlite,Strapi 会在本地工作,但如果我正在运行 postgres,则不会/我在网上发现我可以指定 npm run develop 使用 sqlite,并且生产应该使用 postgres。

对于 REF - 我在这里找到了这个答案:https://github.com/strapi/strapi/discussions/6832

任何人都可以告诉我如何设置它,因为我真的很难阅读这个问题的文档。

当前在文件结构中:

config/database.js

我有这两个设置(针对本地和 heroku)- 我注释掉了 postgres setup for heroku to work locally

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        client: 'sqlite',
        filename: env('DATABASE_FILENAME', '.tmp/data.db'),
      },
      options: {
        useNullAsDefault: true,
      },
    },
  },
});


module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        client: 'postgres',
        host: env('DATABASE_HOST', '127.0.0.1'),
        port: env.int('DATABASE_PORT', 27017),
        database: env('DATABASE_NAME', 'strapi'),
        username: env('DATABASE_USERNAME', ''),
        password: env('DATABASE_PASSWORD', ''),
      },
      options: {
        ssl: false,
      },
    },
  },
});

  1. 当我将我的 strapi 项目推送到 Heroku 时,那里有正确的结构,即文章名称(如下图所示)- 但没有任何内容:即帖子、图片等

enter image description here

我想发生的事情是因为本地 strapi 是使用 sqlite 构建的,heroku 要求我使用 postgres 作为数据库,数据库不一样,所以数据没有被正确读取?

(我可能是错的......)

在这种情况下:如何将本地开发人员(推荐的快速启动设置)移动到您的生产站点?

  • 你会 npm run build 吗?然后在您的常规前端站点上托管 strapi?

  • 有没有办法将数据从一个数据库移动到另一个数据库?

很抱歉在这里问了很多小问题 - 我可能错过了一个将它们联系在一起的概念。

在此先感谢您的帮助, 沃利

最佳答案

我发现了一个非常有用的 Youtube 视频,它实际上解释了步骤 1) 的这个过程

如何根据开发或生产使用不同的数据库来运行它。

简短的回答是在 database.js 文件中你写一个 if 语句来查看你使用的是开发还是生产:

一旦我实现了这个,我会写一个完整的答案:)

视频链接:https://www.youtube.com/watch?v=xNE0TrI5OKk


第 2 部分:您能否将您在 strapi 中完成的工作迁移到生产数据库,例如 Heroku......?

简单的回答是可悲的(而且非常令人沮丧)- 不!

这是来自 Strapis 网站:

Strapi 是否处理内容的部署或迁移? Strapi 目前不提供任何工具来在不同环境之间(即从开发到生产)迁移或部署您的数据更改。除了 Content-Manager 设置外,要了解有关此选项的更多信息,请参阅以下 CLI 文档。

在这里找到:https://strapi.io/documentation/v3.x/getting-started/troubleshooting.html#frequently-asked-questions


我还在 Strapi Slack 页面上与一位非常乐于助人的代表交谈,以找出 WTF 我做错了什么(结果分配......)。

无论如何:

  • 在本地 strapi 中创建您的内容类型
  • 将它们推送到您的在线 strapi (Heroku)
  • 在线添加所有内容而不是本地.....

一线希望?

我还没有这样做,但显然您可以手动传输数据并将其从 sqlite 转换为 postgres,方法是:

您必须使用一些本地数据库客户端(DBeaver 支持 SQLite)进行数据转储,然后将该数据导入 PG 服务器(您也可以在那里使用 DBeaver) Strapi 目前没有任何用于在环境之间迁移内容的工具或建议。

好吧,我希望这能帮助像我一样遇到这个问题的其他人....

沃利:)

关于postgresql - strapi database.js/多个数据库配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63340269/

相关文章:

SQL(postgres)在插入/更新后从多个表返回数据

sql - 迁移后 PostgreSQL 性能下降

SQLite 与 OpenAFS 锁定兼容吗?

sqlite - 如何在我的 Windows Phone 8 应用程序中使用现有的 sqlite 数据库

c# - 打开数据集、计算记录并将数字返回给变量的最快方法

ruby-on-rails - Rails 3.2 + Facebook 身份验证 + CSRF 失败

ssl - Heroku:未启用 SSL

sql - 有什么方法可以使用 LISTEN 和 NOTIFY(或 NodeJS)实时监控 Postgresql 查询更改?

postgresql - 错误 : CREATE DATABASE cannot run inside a transaction block SQL state: 25001 - Using PostgresSQL and pgAdmin 4

ruby-on-rails - 是否可以使用 Ruby 1.9.3 在 Heroku 上运行我的 Rails 应用程序?如果是这样,如何?