我使用NestJS,TypeORM和MySQL来构建一个Web应用程序。
我正在使用。env
文件,用于传入一些环境变量以连接到本地数据库。同步设置为true
。
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('TYPEORM_PORT'),
username: configService.get('TYPEORM_USERNAME'),
password: configService.get('TYPEORM_PASSWORD'),
database: configService.get('TYPEORM_DATABASE'),
autoLoadEntities: true,
synchronize: configService.get('TYPEORM_SYNCHRONIZE'),
}),
inject: [ConfigService],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {
constructor(private connection: Connection) {}
}
此外,我还有一个用户模块,用于导入用户实体。
用户。单元ts
import { User } from './Entities/User.entity';
@Module({
imports: [TypeOrmModule.forFeature(
[User]
)],
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule { }
你ser.entity.ts
@Entity({ name: "Users"})
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
userName: string;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
email: string;
}
假设我的数据库是空的,当第一次启动应用程序时,TypeORM同步将自动为我创建具有适当列和数据类型的用户表。但是,在关闭应用程序并尝试重新启动时,出现以下错误:
[Nest] 14876 - 06/17/2020, 12:37:33 PM [ExceptionHandler] Table 'users' already exists +3ms
QueryFailedError: Table 'users' already exists
at new QueryFailedError (C:\MyProject\Server\node_modules\typeorm\error\QueryFailedError.js:11:28)
at Query.onResult (C:\MyProject\Server\node_modules\typeorm\driver\mysql\MysqlQueryRunner.js:170:45)
at Query.execute (C:\MyProject\Server\node_modules\mysql2\lib\commands\command.js:30:14)
at PoolConnection.handlePacket (C:\MyProject\Server\node_modules\mysql2\lib\connection.js:417:32)
at PacketParser.onPacket C:\MyProject\Server\node_modules\mysql2\lib\connection.js:75:12)
at PacketParser.executeStart (C:\MyProject\Server\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\MyProject\Server\node_modules\mysql2\lib\connection.js:82:25)
at Socket.emit (events.js:315:20)
at addChunk (_stream_readable.js:302:12)
at readableAddChunk (_stream_readable.js:278:9)
如果我随后关闭同步并再次启动它,则会出现相同的错误。我唯一的解决办法是删除users
表,重新打开同步以重新创建它,然后再关闭它。TypeORM试图重新创建一个已经存在的表有什么原因吗?为了便于使用,我不希望每次都记得切换同步。
我有类似的问题,我最终解决了它,我发现我把同步设置为false,然后是true,并做了一些测试,创建/生成了保持同步为真的迁移。我还生成了一些迁移,但没有应用。后来我将同步设置为false,当我尝试应用迁移时,它给我错误,就像你提到的那样。我认为未应用的成堆生成迁移给了我问题。
因此,对我来说,解决问题的方法是删除所有迁移文件,然后重新生成迁移并应用该迁移。这就解决了问题。
我也有同样的问题,但我只是在我的或mconfig中将migrationrun设置为false。ts
文件,它工作了。
synchronize: false,
migrationsRun: false,
我认为这个问题是由于orm试图自动运行迁移,而我们已经手动完成了迁移。
就我而言,问题是由
synchronize: true
migrationsRun: true
在里面
typeOrmConfig
应仅将synchronize或MigrationRun设置为true,而不是同时将两者设置为true
当我设置typeORM我得到一个错误,但当我使我没有得到那个错误。但是我需要使用来获取数据库更改。有办法解决这个问题吗?
我有一个由多个线程操作的ArrayList,由于ArrayList没有同步,所以无法工作。按照教授的指示,我把列表换成了向量。向量是同步的,但我抛出了与同步相关的异常。 为什么会发生这种情况,我如何避免代码中的并发异常?我不想只是玩玩,直到有东西起作用,我想做最好的事情。谢谢! 例外情况: 代码:
我得到以下错误时使用colspan在我的th标签。 通常,当表单元格的数量在每一行中不相等时,会发生此错误,但情况并非如此。这是我的代码: 下面是codepen中的一个示例:https://codepen.io/anon/pen/EQOVMe?editors=1111 使用jQuery 1.12.3和数据表1.10.16 有什么想法吗?
我期望这段代码(在对细化类型使用模式匹配后调用匿名类的方法) 要打印 (以及未经检查的警告)。 我知道由于类型擦除,匹配总是成功的,但这不应该导致问题,因为的运行时类型(甚至考虑擦除)应该是
问题内容: 我一直在尝试hibernate,Spring和Servlet。现在,我被卡住了。为什么会出现此异常?我认为将hbm2ddl.auto设置为create时会自动创建表。 appicationContext.xml UserDetails.java Main.java 例外 问题答案: 属性名称应以hibernate作为前缀。 顺便说一句,有一种更简单的方法来配置属性,如下所示
问题内容: 我要添加此表: 我得到了1050个“表已经存在” 但是该表不存在。有任何想法吗? 编辑:更多细节,因为每个人似乎都不相信我:) 产量: 1146-表’gunzfact_vbforumdb.contenttype’不存在 和 产量: 1050-表“ contenttype”已存在 问题答案: 听起来好像您有Schroedinger的桌子 … 严重的是,现在您的表可能已损坏。尝试: 如果您