首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sequelize插入Server时,会丢失大的浮点值

使用Sequelize插入Server时,会丢失大的浮点值
EN

Stack Overflow用户
提问于 2020-04-08 19:42:19
回答 2查看 1.5K关注 0票数 1

每当我尝试使用sequelize插入大于~50k的浮点数时,数据库就会填充其他内容。

对于这个值123456789.123456,我得到这个插入的11186.78219

其他一些同事在其他输入方面得到了不同的输出,但接近于11186.78219 (如11177.782191683797 )。我不知道这意味着什么。

当我通过node-mssql客户端执行相同的插入时,一切都很好,这也可以通过内部续集来使用。

因此,我从Sequelize的模型的create语句,通过node-mssql,通过乏味的,直到node.js网络请求库,跟踪了执行路径,以确保我的初始输入号始终保持不变。

但是,在发送请求之后,发生了一些事情,数据库接收到了不同的值。

直接在数据库上设置一个大值并通过Sequelize检索它也很好。

我创建这个回购是为了看看是否有人可以复制它。

编辑:我想我应该澄清我是如何使用Sequelize :)

这是一个失败的示例用户模型和创建:

代码语言:javascript
复制
const User = sequelize.define('User', {
    networth: {
        type: DataTypes.FLOAT,
        // none of these work
        // type: DataTypes.FLOAT(20, 5),
        // type: DataTypes.DECIMAL(20, 5),
        // type: DataTypes.DOUBLE,
    },
}, {
    timestamps: false,
});

User.create({ networth: 123456798.123456 });

不过,这个node-mssql示例可以工作:

代码语言:javascript
复制
await pool.request()
    .input('networth', sql.Float, float_value)
    .query(`insert into users (networth) values (@networth)`)

编辑2:我从Server抓取了一些数据,显示了Sequelize调用和node-mssql调用之间的区别:

节点-mssql:exec sp_executesql @statement=N'insert into users (networth) values (@networth)',@params=N'@networth float',@networth=123456798,123456

续写:exec sp_executesql @statement=N'INSERT INTO [Users] ([networth]) OUTPUT INSERTED.* VALUES (@0);',@params=N'@0 numeric(30, 15)',@0=11186.782191684157440

所以数据确实坏了..。

编辑3:我想我找到了问题的根源,我打开了一个问题这里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-09 16:59:26

因此,它是主分支上的后缀v5和它被解决了上的一个bug。我计划提交一个PR,以便将其集成到v5中。

票数 1
EN

Stack Overflow用户

发布于 2020-04-08 20:31:35

复制是给我的。运行该应用程序,并捕获了Profiler中的流量。应用程序发送

代码语言:javascript
复制
exec sp_executesql @statement=N'INSERT INTO [Users] ([networth]) OUTPUT INSERTED.* VALUES (@0);',@params=N'@0 numeric(30, 15)',@0=11186.782191684157440

运行该应用程序后,User表包含:

代码语言:javascript
复制
id          networth
----------- ----------------------
1           11186.7821916842
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61108786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档