最近我遇上了如題這個問題,后端用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就行
問題解決