TypeORM中是否不支持smallserial、serial、bigserial等serial类型?
TypeORM中PostgreSQL的serial系列类型报错解决方案
在PostgreSQL环境下使用TypeORM创建实体时,若尝试将smallserial、serial或bigserial指定为@PrimaryGeneratedColumn的类型,会触发TypeScript类型错误:'Type "smallserial" is not assignable to type'。这是因为TypeORM的官方类型定义未将这些PostgreSQL原生serial类型纳入允许的枚举值,但可以通过以下两种方式解决:
方案一:使用TypeORM适配的替代配置
serial系列类型本质是PostgreSQL的语法糖(自增整数+绑定序列),TypeORM提供了等价的配置方式:
- 替代
smallserial:使用smallint类型+自增策略 - 替代
serial:使用int类型+自增策略 - 替代
bigserial:使用bigint类型+自增策略
示例代码(以smallserial为例):
import { Entity, PrimaryGeneratedColumn } from "typeorm"; @Entity() export class YourEntity { @PrimaryGeneratedColumn({ type: 'smallint', generated: true, generationStrategy: 'increment' }) id: number; }
方案二:强制绕过TypeScript类型检查
如果需要直接使用PostgreSQL原生的serial类型,可以通过类型断言绕过TypeScript的类型校验:
示例代码(以smallserial为例):
import { Entity, PrimaryGeneratedColumn } from "typeorm"; @Entity() export class YourEntity { @PrimaryGeneratedColumn({ type: 'smallserial' as const }) id: number; }
两种方案最终生成的数据库表结构效果与直接使用serial系列类型一致,都会自动创建对应的自增序列。
内容的提问来源于stack exchange,提问作者mubashir
相关产品推荐
相关产品推荐

