NestJs TypeORM не может подключиться к MySQL - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь подключиться к MySQL. Я определил переменные соединения db в файле .env в моем корневом каталоге, и я инициализирую соединение в файле app.module.ts. единственная проблема, с которой я сейчас сталкиваюсь, - это создание или запуск миграций с использованием CLI, Я следовал инструкциям typeorm docs здесь для настройки соединения, однако, когда я запускаю typeorm migrate:create -n myNewTable, он должен создать файл миграции в указанном каталоге, вместо этого он создает его в корневом каталоге приложения, аналогично, я решил проблему, используя флаг -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

любая помощь / подсказка высоко ценится, заранее спасибо.

1 Ответ

0 голосов
/ 26 марта 2019

вы можете попробовать следующее: я не использую файл .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,
    }),
...