NestJS+TypeORM+PostgreSQL迁移报错:database 'admin'不存在
解决NestJS + TypeORM PostgreSQL迁移报错问题
核心问题:环境变量不匹配
你的.env文件里的变量前缀是POSTGRES_,但ormconfig.ts里引用的是DATABASE_开头的变量,导致TypeORM无法读取正确的数据库配置,只能使用默认值(默认会取当前系统用户作为数据库用户名,同时尝试连接同名数据库),这就是你先后遇到role "admin" does not exist和database "admin" does not exist的原因。
修复步骤
修正ormconfig.ts的环境变量引用
将ormconfig.ts里的环境变量名改成和.env完全一致:import { DataSource } from 'typeorm'; import * as dotenv from 'dotenv'; import { cwd } from 'process'; dotenv.config(); export const dataSource = new DataSource ({ type: 'postgres', host: process.env.POSTGRES_HOST, port: Number(process.env.POSTGRES_PORT), username: process.env.POSTGRES_USERNAME, password: process.env.POSTGRES_PASSWORD, database: process.env.POSTGRES_DATABASE, entities: [cwd() + 'src/**/*.entity{.ts,.js}'], migrations: [cwd() + 'src/migrations/*{.ts,.js}'], migrationsTableName: 'migrations', synchronize: false, dropSchema: false, });(可选)如果要使用admin用户连接
如果你想切换到admin用户操作数据库,需要额外做两步:- 修改
.env里的POSTGRES_USERNAME为admin,POSTGRES_PASSWORD改为你设置的pass123 - 在PostgreSQL中创建
admin数据库:CREATE DATABASE admin OWNER admin;
- 修改
重新执行迁移命令
执行生成迁移的命令:npm run migration:generate --name=CofffeeRefactor
内容的提问来源于stack exchange,提问作者Rekhy Zakaria
相关产品推荐
相关产品推荐

