PostgreSQL et RSyslog : Error integer out of range

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Logiciel Mots clés : PostgreSQL, RSyslog
En utilisant PostgreSQL pour stocker des messages de log émanant de RSyslog, il peut arriver un léger problème si on a utilisé le schéma fourni avec RSyslog : avec de grosses quantités d'événements, le champ id peut atteindre les limites du type integer (-2147483648 à +2147483647), entraînant des messages "Error integer out of range" ou "Erreur entier en dehors des limites" en bon français.



Table « public.systemevents »
Colonne | Type | Modificateurs | Stockage | Cible de statistiques | Description
--------------------+-----------------------------+---------------------------------------------------------------+----------+-----------------------+-------------
id | integer | non NULL Par défaut, nextval('systemevents_id_seq'::regclass) | plain | |
customerid | bigint | | plain | |
receivedat | timestamp without time zone | | plain | |
devicereportedtime | timestamp without time zone | | plain | |
facility | smallint | | plain | |
priority | smallint | | plain | |
fromhost | character varying(60) | | extended | |
message | text | | extended | |
ntseverity | integer | | plain | |
importance | integer | | plain | |
eventsource | character varying(60) | | extended | |
eventuser | character varying(60) | | extended | |
eventcategory | integer | | plain | |
eventid | integer | | plain | |
eventbinarydata | text | | extended | |
maxavailable | integer | | plain | |
currusage | integer | | plain | |
minusage | integer | | plain | |
maxusage | integer | | plain | |
infounitid | integer | | plain | |
syslogtag | character varying(60) | | extended | |
eventlogtype | character varying(60) | | extended | |
genericfilename | character varying(60) | | extended | |
systemid | integer | | plain | |
processid | character(8) | Par défaut, NULL::bpchar | extended | |
checksum | integer | | plain | |
Index :
"systemevents_pkey" PRIMARY KEY, btree (id)
Contient des OID: non


Pour corriger cela, il faut altérer la table systemevents et changer le type de id en bigint permettant des valeurs de -9223372036854775808 à +9223372036854775807 :
alter table systemevents ALTER id type bigint;

et le tour est joué :


Table « public.systemevents »
Colonne | Type | Modificateurs | Stockage | Cible de statistiques | Description
--------------------+-----------------------------+---------------------------------------------------------------+----------+-----------------------+-------------
id | bigint | non NULL Par défaut, nextval('systemevents_id_seq'::regclass) | plain | |
customerid | bigint | | plain | |
receivedat | timestamp without time zone | | plain | |
devicereportedtime | timestamp without time zone | | plain | |
facility | smallint | | plain | |
priority | smallint | | plain | |
fromhost | character varying(60) | | extended | |
message | text | | extended | |
ntseverity | integer | | plain | |
importance | integer | | plain | |
eventsource | character varying(60) | | extended | |
eventuser | character varying(60) | | extended | |
eventcategory | integer | | plain | |
eventid | integer | | plain | |
eventbinarydata | text | | extended | |
maxavailable | integer | | plain | |
currusage | integer | | plain | |
minusage | integer | | plain | |
maxusage | integer | | plain | |
infounitid | integer | | plain | |
syslogtag | character varying(60) | | extended | |
eventlogtype | character varying(60) | | extended | |
genericfilename | character varying(60) | | extended | |
systemid | integer | | plain | |
processid | character(8) | Par défaut, NULL::bpchar | extended | |
checksum | integer | | plain | |
Index :
"systemevents_pkey" PRIMARY KEY, btree (id)
Contient des OID: non


Les commentaires sont fermés.