Avatar billede thorvall Nybegynder
25. november 2008 - 11:53 Der er 4 kommentarer og
1 løsning

"tvinge" integer size til 8 bytes

Hej Jeg sidder og arbejder med tal med ti cifre, og postgres default med 4 bytes integers giver overflow på alle tal større end ~2.1*10^10.

Har tidligere arbejdet med tilsvarende data med postgres under gentoo, hvor jeg brugte knoda til at importere med fra csv filer. Her gik det fint.

Bruger i dag elive (debian/Lenny) og her optræder problemmet, samme metode, posrgres 8.3 og knoda. En søgning på nettet har ikke givet noget brugbart.
Når jeg importere an gammel database får jeg ingen problemmer, så jeg er i tvivl om det kan være forskellige konfigurationer af knoda der er årsagen (nuværende version er 0.8.3-2).

Hjælp søges, eller bare hjælp til hvor jeg skal søge svaret.
Avatar billede thorvall Nybegynder
25. november 2008 - 13:16 #1
Er kommet lidt dybere ned i sagerne og kan se at variablen godt nok er gemt som int8 (bigint) i postgres, så det må være et sted i konverteringen det går galt. Nogen ideer.
Avatar billede thorvall Nybegynder
25. november 2008 - 13:19 #2
Fra Postgres dokumentationen:
8.1.1. Integer Types

The types smallint, integer, and bigint store whole numbers, that is, numbers without fractional components, of various ranges. Attempts to store values outside of the allowed range will result in an error.

The type integer is the usual choice, as it offers the best balance between range, storage size, and performance. The smallint type is generally only used if disk space is at a premium. The bigint type should only be used if the integer range is not sufficient, because the latter is definitely faster.

The bigint type might not function correctly on all platforms, since it relies on compiler support for eight-byte integers. On a machine without such support, bigint acts the same as integer (but still takes up eight bytes of storage). However, we are not aware of any reasonable platform where this is actually the case.

Den sidste paragraf gør mig lidt usikker for opførslen minder om det her nævnte, men omvendt er debian, og linux vel så godt afprøvet at dette ikke er årsagen.
Avatar billede arne_v Ekspert
25. november 2008 - 18:32 #3
Hvor faar du fejlen og hvordan giver det sig udslag ?

Fiktivt eksempel paa mere praecis beskrivelse:

"Naar jeg laver UPDATE T SET F = 128 skriver den '128 exceeeds range of byte'".
Avatar billede thorvall Nybegynder
25. november 2008 - 18:46 #4
Jeg får ingen fejlmeddelelse. Men efter import er tal størrer end 2147483647, alle værdien -2147483648.
Avatar billede thorvall Nybegynder
16. marts 2012 - 09:53 #5
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester