Strapi database.js / 多个数据库配置

Wal*_*lly 2 sqlite postgresql 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
Run Code Online (Sandbox Code Playgroud)

我有这两个设置(用于本地和 heroku) - 我注释掉了postgresheroku 在本地工作的设置

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,
      },
    },
  },
});
Run Code Online (Sandbox Code Playgroud)
  1. 当我将我的 Strapi 项目推送到 Heroku 时,正确的结构是存在的,即文章名称(如下图所示)-但没有任何内容:即帖子、图片等

在此处输入图片说明

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

(我可能错了....)

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

  • 你 npm 运行构建吗?然后在您的正常前端站点上托管trapi?

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

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

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

Wal*_*lly 5

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

如何运行不同的数据库取决于它是由开发者还是生产者使用。

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

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

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


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

简单的答案是可悲的(并且令人沮丧)-不!

这是来自 Strapis 网站:

Strapi 是否处理内容的部署或迁移?Strapi 目前不提供任何工具来在不同环境(即从开发到生产)之间迁移或部署您的数据更改。除了内容管理器设置之外,要阅读有关此选项的更多信息,请参阅以下 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 目前没有任何工具或建议用于环境之间的内容迁移。

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

沃利:)