如何使用 Drizzle ORM 和 Remix 在具有 SQLite 数据库的 VPS 上运行生成和迁移?

问题描述 投票:0回答:1

因此,我有一个正在开发的数据库,我运行

db:generate
db:migrate
来创建数据库,然后运行使用该数据库的应用程序。

而且效果很好。

但是当我无法运行直接命令时,如何在生产中执行此操作。我在自托管 VPS 上使用 https://easypanel.io

我只使用前置脚本还是后置脚本?推荐的方法是什么?

    "scripts": {
        "build": "remix build",
        "dev": "remix dev --manual",
        "lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .",
        "prestart": "npm run db:generate",
        "start": "remix-serve ./build/index.js",
        "clean": "rimraf .cache/ build/ public/build/",
        "db:push": "drizzle-kit push:sqlite --config drizzle.config.ts",
        "db:generate": "drizzle-kit generate:sqlite --config drizzle.config.ts",
        "db:studio": "drizzle-kit studio --host localhost --port 3002 --verbose --config drizzle.config.ts",
        "db:seed": "cross-env NODE_ENV=development tsx ./app/seed/index.ts",
        "typecheck": "tsc",
        "prettier": "prettier --write app/**/*.{ts,tsx}"
    },

我正在想像上面那样的

prestart
。最好的方法是什么?我只希望它运行一次来创建
./sqlite.db
然后就不需要它了。

sqlite orm vps remix.run drizzle
1个回答
0
投票

我认为你可能误解了generate的作用。

这只是生成一个在 /drizzle 文件夹下创建的迁移脚本。或者无论你给它起什么名字。

在开发过程中对任何关系进行更改后,必须生成迁移脚本。

您的远程环境不应生成迁移脚本。您,开发人员,创建它们。或者,更常见的是,您告诉 drizzle 根据架构更改自动执行此操作。使用 db:generate 命令。

远程环境所要做的就是运行迁移,它将可以在代码中访问该迁移。

通常最简单的方法是让应用程序在启动时运行任何迁移。但方法有很多。

© www.soinside.com 2019 - 2024. All rights reserved.