JavaScript調用mysql查詢bigint數據精度失真解決方案


最近我遇上了如題這個問題,后端用node.js寫了一個讀取mysql數據的接口,之前使用了很久都沒發現什么問題,在查詢訂單表的訂單ID時返回的值卻是錯的

正確的值是

19102818002800002

但是js里返回的值卻是 

19102818002800000

最后一位不一定是0,但是總是失真,由於訂單ID我在后續的多個地方重復使用,導致后面所有用到這個值的地方全是錯的。

發現結果有錯以后,層層回溯才終於找到了這個錯誤源。

開始時沒有想明白是哪里的問題,我嘗試將這個數據改短一點后發現返回的值就對了,由此診斷出這里應該是數值過大導致的精度失真

 

 看了下數據庫結構 ID是bigint類型的

想來想去只能是把這個值查詢出來以后立刻賦值成string類型的,不修改接口,直接修改SQL

select *from order_info
修改成
select *,concat(id) ids from order_info
這里把id查詢出來以后 將獲取的值賦給 ids 這個變量,返回的josn中 我們只用res_data.ids 替代id就行 
問題解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM