You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeORM对接MariaDB使用UUID作为主键时User表主键生成异常问题

问题原因确认

该现象和使用MariaDB无关,不属于数据库适配差异导致的问题,是TypeORM的编译加载、同步逻辑导致的异常。

解决步骤

  • 第一步:清理旧编译产物
    你配置的entities加载路径为dist/src/**/*.entity.js,即加载编译后的JS实体文件。如果之前User实体曾经使用默认自增主键配置,修改为UUID后没有全量重新编译,dist目录下残留的旧实体文件会导致TypeORM读取到错误的配置。
    执行以下操作清理:
# 删除旧编译产物
rm -rf dist
# 全量编译TypeScript
npm run build
  • 第二步:重建异常表
    TypeORM的synchronize: true配置为增量同步,不会主动修改已存在的表主键类型,避免触发数据丢失风险。需要先手动删除数据库中已生成的异常Users表,重启应用后TypeORM会自动按照最新实体配置重建表。
  • 第三步:(可选)显式指定主键类型避免适配异常
    如果上述操作后问题仍然存在,可以给主键字段显式指定类型,降低TypeORM自动适配的误差:
@PrimaryGeneratedColumn('uuid', {
  type: 'char',
  length: 36
})
id: string;

额外注意事项

synchronize: true配置仅适合开发环境使用,生产环境请关闭该配置,改用迁移(Migration)工具管理表结构变更,避免意外丢失数据。

内容的提问来源于stack exchange,提问作者Toby Boulton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:12:03