25. november 2008 - 11:53Der 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.
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.
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.
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.