Out of range value for column 'amount' at row 1

Out of range value for column 'amount' at row 1
J1
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 2 lata
  • Postów:224
0

Mam w tabeli kolumnę

Kopiuj
amount DECIMAL(10,10) NULL

Zapisuję do niej dane

Kopiuj
preparedStatement
            = this.getConnection().prepareStatement
            ("UPDATE wallets SET amount = ? WHERE id = ?");
    preparedStatement.setBigDecimal(1, new BigDecimal("2.5"));
...

i otrzymuję wyjątek

Kopiuj
Exception in thread "main" com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'amount' at row 1

Nie wiem dlaczego tak się dzieje.


Grzyboo
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Postów:206
1

Bo używasz DECIMAL(10,10), co oznacza liczbę o długości 10 z dziesięcioma miejscami po przecinku. Nie ma tutaj miejsca na liczbę większą od 0. Spróbuj np. DECIMAL(15,5)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.