postgresql use_env_variable在序列化中返回未定义的值

zengzsys  于 2023-03-01  发布在  PostgreSQL
关注(0)|答案(5)|浏览(137)

我使用的是最新版本的sequelize,我的server/config/config.json文件配置如下:

{
    "development": {
        "use_env_variable": "DATABASE_URL",
        "dialect": "postgres"
    },
    "test": {
        "use_env_variable": "DATABASE_TEST_URL",
        "dialect": "postgres"
    },
    "production": {
        "use_env_variable": "DATABASE_URL",
        "dialect": "postgres"
    }
}

我的.env文件配置如下:

DATABASE_URL = "MY database URL Here"

当我运行sequelize db:migrate时,我得到以下内容:

  • 解析url时出错:未定义 *
owfi6suc

owfi6suc1#

您没有定义变量$DATABASE_URL。
在终端中尝试此操作:

export DATABASE_URL=postgresql://[user[:password]@][netlocation][:port][/dbname]
avwztpqn

avwztpqn2#

我通过源代码找到了解决方案:配置文件是.js,而不是标准的.json
文件config/config.js

module.exports = {
    use_env_variables: "DATABASE_URL",
    dialect: "postgres"
}

您可以运行:

DATABASE_URL=postgres://127.0.0.1:5432/mydb npx sequelize-cli db:migrate

但它并没有像预期的那样工作,新型号被添加到数据库中,与笔记本电脑♂的用户名同名🤦‍,️我没有时间从来源中找出。
但是我发现了另一个sequelize-cli的解决方案,其中参数--url是一个键:

npx sequelize-cli --url postgres://127.0.0.1:5432/mydb db:migrate
8fsztsew

8fsztsew3#

对于Windows用户

〉设置数据库URL=postgresql://[用户[:密码]@][网络位置][:端口][/数据库名称]

注意:将“export”更改为“SET”,在我这边工作

jdzmm42g

jdzmm42g4#

或者,当您要在终端中启动服务器时,请记住如下配置env

  • 环境发展
    --环境测试

示例创建迁移

sequelize db:migrate --env development

sequelize db:migrate --env test

npm run dev --env development

以上的npm脚本帮助我在开发环境中启动服务器

uurity8g

uurity8g5#

.sequelizerc文件的顶部添加require("dotenv").config()
您的.env可以类似于DATABASE_URL=MY database URL Here
如果您没有.sequelizerc文件,请查看文档https://sequelize.org/docs/v6/other-topics/migrations/#the-sequelizerc-file。

相关问题