【问题标题】:"QueryFailedError: invalid input syntax for integer:" when querying on type float“QueryFailedError:整数的输入语法无效:”查询浮点类型时
【发布时间】:2019-12-14 22:08:07
【问题描述】:

当使用 TypeORM QueryBuilder() 查询数据库时,我得到:

QueryFailedError: invalid input syntax for integer: "X"

X 是存储在 DB 中的值。

最初我的实体是类型;

{type: 'decimal', precision: 5, scale: 2 }
value: number

由于我已将其更改为:

{type: 'real'}
value: string

并尝试过:

'float'
value: string

所有三种类型都会抛出相同的错误。但是,如果数据库中的值没有任何小数位 - 它工作正常。

我正在运行 Postgres v11.4、TypeORM v0.2.18 和 Nest.js v6.5.3

实体定义:

export class Entity extends BaseEntity {

    @Column('float')
    value: string;
}

查询:

const current = await this.entityRepo
            .createQueryBuilder('uL')
            .leftJoin('uL.user', 'user')
            .leftJoinAndSelect('uL.currentLevel', 'cL')
            .where('user.id = :id', { id: userId })
            .getOne();

我希望返回实体,其值为正确的小数间距。

【问题讨论】:

    标签: postgresql nestjs typeorm


    【解决方案1】:

    在更新到 TypeORM v0.2.18 后,我遇到了同样的错误:PostgreSQL 实际上并不知道“数字”; Microsoft GitHub

    上的 typeorm 存储库中的更多信息

    改变了这个:

    @Column()
    value: number;
    

    ...到那个:

    @Column({type: 'real'})
    value: string;
    

    我忘记迁移了;是吗?

    重要运行迁移,以实际应用这些更改:

    npm run typeorm:migrate ChangedNumbersTypeToReal
    npm run build; npm run typeorm:run
    

    现在一切都应该好了。

    您可以在他们的GitHub 上阅读有关使用 TypeORM 进行迁移的更多信息

    【讨论】:

    • 谢谢,它帮助了我,唯一的观察是在这里我必须在运行迁移之前清理更改的列
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2023-01-26
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多