Bloc-notes

PostgreSQL et RSyslog : Error integer out of range

Rédigé par Nicolas Sulek Aucun commentaire
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.

Fil RSS des commentaires de cet article