NestJS TypeORM报错MySQL不支持Object类型 已删MyEntity如何解决
NestJS删除实体后仍报MySQL类型不支持错误的解决方法
Data type "Object" in "MyEntity.undefined" is not supported by "mysql" database.
按照以下步骤逐一排查:
- 清理编译缓存
NestJS默认运行dist目录下的编译后产物,删除实体后如果未清理旧编译文件,旧的MyEntity代码依然会被加载。操作:删除项目根目录的dist文件夹,重新执行编译命令后再启动应用。 - 校验TypeORM实体扫描配置
检查TypeORM配置项(通常在ormconfig.ts、app.module.ts的TypeORM初始化参数中)的entities字段:如果使用通配符扫描(例如entities: ['dist/**/*.entity.js']),确认扫描路径下没有残留的MyEntity编译文件;如果是硬编码引入实体,检查是否有遗漏未删除的MyEntity导入语句。 - 清除其他实体的关联引用
全局搜索项目内的MyEntity关键词,检查是否有其他实体保留了和MyEntity的关联装饰器(例如@OneToMany、@ManyToOne),删除所有残留的关联引用代码。 - 排查实体列配置错误
报错中的MyEntity.undefined说明TypeORM解析实体时未识别到对应列名,若确认没有任何MyEntity相关代码,需检查所有实体的列配置:是否存在漏写@Column()参数、列类型指定为普通Object、列名变量拼写错误导致解析为undefined的情况,这类配置错误会触发TypeORM误报残留实体的类型错误。 - 清理依赖缓存
上述步骤无效时,执行npm cache clean --force(yarn用户执行yarn cache clean),删除node_modules文件夹后重新安装依赖再启动应用。
内容的提问来源于stack exchange,提问作者Duncan Lukkenaer
相关产品推荐
相关产品推荐

