我正在尝试连接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
任何帮助/提示都非常感谢,提前感谢。
您可以尝试以下方法:我不使用.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,
}),