nob*_*are 8 mysql typeorm nestjs
我有一个新的 Web 应用程序,并且编写了一个迁移器来创建用户表。但是,无论我尝试什么,typeorm 似乎都找不到此迁移器,因此也不会运行它。
我的文件结构(未显示其他文件/文件夹):
??? Server
? ??? dist
| | ??? Migrations
| | | ??? 1234567891234567890-AddUserTable.js
| | | ??? 1234567891234567890-AddUserTable.js.map
| | | ??? 1234567891234567890-AddUserTable.d.ts
? ??? src
| | ??? Migrations
| | | ??? 1234567891234567890-AddUserTable.ts
| | ??? app.module.ts
Run Code Online (Sandbox Code Playgroud)
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({ envFilePath: '.env' }),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
type: 'mysql',
host: configService.get('TYPEORM_HOST'),
port: +configService.get<number>('TYPEORM_PORT'),
username: configService.get('TYPEORM_USERNAME'),
password: configService.get('TYPEORM_PASSWORD'),
database: configService.get('TYPEORM_DATABASE'),
synchronize: configService.get('TYPEORM_SYNCHRONIZE'),
entities: [__dirname + '/**/*.entity{.ts,.js}'],
migrations: [__dirname + '/Migrations/**/*.js'],
migrationsRun: false,
cli: {
migrationsDir: './Migrations',
},
}),
inject: [ConfigService],
}),
],
controllers: [],
providers: [],
})
export class AppModule {
constructor(private connection: Connection) {}
}
Run Code Online (Sandbox Code Playgroud)
为了运行它,在我的控制台窗口中,我输入:nest start为了让我的服务器启动。
然后,我运行npx typeorm migration:run我得到的:
query: SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'myDB' AND `TABLE_NAME` = 'migrations'
query: SELECT * FROM `myDB`.`migrations` `migrations` ORDER BY `id` DESC
No migrations are pending
Run Code Online (Sandbox Code Playgroud)
如果我查看我的数据库,我会看到一个migrations里面没有条目的表。
我试图删除我的迁移文件并使用更新的时间戳重新创建它,但这也不起作用。
npx typeorm migration:create -n "MyMigratorName"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
dak*_*019 11
对于任何来这里寻求帮助的人:
上面的配置提到了在 js 文件中可以找到的迁移:
migrations: [__dirname + '/Migrations/**/*.js'],
然而,从文件夹结构中可以清楚地看出,迁移是写在 ts 文件而不是 js 中的。
要从 ts 运行迁移,请遵循此处描述的官方推荐方式:
https://github.com/typeorm/typeorm/blob/master/docs/using-cli.md#if-entities-files-are-in-typescript
同样在这种情况下,不要忘记将迁移 blob 更新为 ts:
migrations: [__dirname + '/Migrations/**/*.ts'],
如果要从 js 文件运行迁移,则必须在 ts 文件编译为 js 形式后提供来自 dist 文件夹的位置。
| 归档时间: |
|
| 查看次数: |
6295 次 |
| 最近记录: |