NestJs TypeORM无法连接到mysql

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

我正在尝试连接MySQL。我在root目录中的.env文件中定义了数据库连接变量,我正在app.module.ts文件中初始化连接。我现在面临的唯一问题是在使用CLI创建或运行迁移时,我按照typeorm docs here来配置连接,但是当我运行typeorm migrate:create -n myNewTable时,它应该在指定的目录中创建迁移文件,它的作用是它在app根目录中创建它,类似地,我通过在-d之后使用typeorm migrate:create标志来指定目录来解决问题,但是当我尝试运行我的迁移文件时,我得到了这个

在任何配置文件中都找不到任何连接选项。

这是我的app.module.ts文件。

TypeOrmModule.forRoot({
      type: 'mysql',
      host: process.env.TYPEORM_HOST,
      port: parseInt(process.env.TYPEORM_PORT, 10),
      username: process.env.TYPEORM_USERNAME,
      password: process.env.TYPEORM_PASSWORD,
      database: process.env.TYPEORM_DATABASE,
      synchronize: false,
      migrations: [process.env.TYPEORM_MIGRATIONS],
      cli: {
        migrationsDir: process.env.TYPEORM_MIGRATIONS_DIR,
      },
      logging: (process.env.TYPEORM_LOGGING === 'true') ? true : false,
      entities: [__dirname + '/../**/*.entity{.ts,.js}'],
    }),
 

这是我的.env文件

# use .ts for development, .js for production
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_PORT = 3306
TYPEORM_USERNAME = <username>
TYPEORM_PASSWORD = <password>
TYPEORM_DATABASE = <dbname>
TYPEORM_SYNCHRONIZE = true
TYPEORM_MIGRATIONSRUN = true
TYPEORM_LOGGING = true
TYPEORM_ENTITIES = src/**/**.entity.ts
#TYPEORM_ENTITIES = src/**/**.entity.js
TYPEORM_SUBSCRIBERS = src/subscriber/*.ts
#TYPEORM_SUBSCRIBERS = src/subscriber/*.js
TYPEORM_MIGRATIONS = src/database/migration/*.ts
TYPEORM_MIGRATIONS_DIR = src/database/migration
TYPEORM_SUBSCRIBERS_DIR = src/subscriber

任何帮助/提示都非常感谢,提前感谢。

mysql node.js typescript nestjs typeorm
1个回答
0
投票

您可以尝试以下方法:我不使用.env文件,我直接使用配置文件,希望它能为您服务。

创建config.ts文件

粘贴这个:

export const MYSQL = {
    HOST: 'localhost',
    PORT: 3306,
    USERNAME: 'db_user',
    PASSWORD: 'db_pass',
    DATABASE: 'db_name'
};

在文件中您的连接配置写入。在我的情况下,它的应用程序模块:

import { MYSQL } from './config/config';

TypeOrmModule.forRoot({
      type: 'mysql',
      host: MYSQL.HOST,
      port: MYSQL.PORT,
      username: MYSQL.USERNAME,
      password: MYSQL.PASSWORD,
      database: MYSQL.DATABASE,
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
© www.soinside.com 2019 - 2024. All rights reserved.