日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[错误记录] --- clickhouse报错Decimal value is too small

發布時間:2024/7/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [错误记录] --- clickhouse报错Decimal value is too small 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java操作clickhouse數據庫,執行insert的時候,報錯:

Exception in thread "main" ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 69, host: xx.xx.xx.xxx, port: xxxx; Code: 69, e.displayText() = DB::Exception: Decimal value is too small (version 19.16.2.2 (official build))at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:58)at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:28)at ru.yandex.clickhouse.ClickHouseStatementImpl.checkForErrorAndThrow(ClickHouseStatementImpl.java:771)at ru.yandex.clickhouse.ClickHouseStatementImpl.getInputStream(ClickHouseStatementImpl.java:570)at ru.yandex.clickhouse.ClickHouseStatementImpl.executeQuery(ClickHouseStatementImpl.java:122)at ru.yandex.clickhouse.ClickHouseStatementImpl.executeQuery(ClickHouseStatementImpl.java:105)at ru.yandex.clickhouse.ClickHouseStatementImpl.executeQuery(ClickHouseStatementImpl.java:100)at ru.yandex.clickhouse.ClickHouseStatementImpl.executeQuery(ClickHouseStatementImpl.java:95)at ru.yandex.clickhouse.ClickHouseStatementImpl.execute(ClickHouseStatementImpl.java:196)at com.Xxx.java:102) Caused by: java.lang.Throwable: Code: 69, e.displayText() = DB::Exception: Decimal value is too small (version 19.16.2.2 (official build))at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:53)... 9 more

分析

出現Decimal value is too small這個錯誤,肯定是Decimal類型的字段格式不對。

經檢查分析,有個字段入參的小數點后位數太多,就會報這個錯。

我們在新建表的時候,會指定Decimal類型的精度,比如Decimal(32,15);
注意這個15,如果小數點后超過15位,他就會報錯,提醒你屬性精度太小。讓你提高精度。
insert into aa(price) values(0.3499999940395356);

解決

1.可以重新設置表的屬性精度
2.如果不需要那么高的精度,可以在入庫的時候先對BigDecimal類型做個四舍五入的去精度,比如保留4位小數,結果如下:
BigDecimal auction_price = new BigDecimal(“0.3499999940395356”).setScale(4, BigDecimal.ROUND_HALF_UP);
最終auction_price=0.3500

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[错误记录] --- clickhouse报错Decimal value is too small的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。