Il arrive parfois, suite à une coupure de courant et que vous n'avez pas d'onduleur ou quand votre ordinateur s'arrête pas proprement, que MongoDb ne veuille plus démarrer et affiche le message d'erreur "".
Pour éviter que cela ne produise vous pouvez modifier le fichier /etc/init.d/mongodb et ajouter ceci :
# Recover Data after an Unexpected Shutdown if [ -f /var/lib/mongodb/mongod.lock ] ; then rm /var/lib/mongodb/mongod.lock mongod --dbpath /var/lib/mongodb --repair chown -R mongodb:nogroup /var/lib/mongodb fi
dans le bloc start_server() juste avant de démarrer le processus (à la ligne 115 dans mon cas)
Le but est d'autoriser l'utilisateur à écrire un modificateur pour modifier une date. Cela permet d'être plus dynamique. Un modificateur se compose de 3 parties : - Type d'opération sous la forme + ou - - Valeur à appliquer - Partie de la date à modifier sous la forme d pour jour, w pour semaine, m pour mois et y pour année
La fonction se présente sous la forme :
CREATE FUNCTION [dbo].[ApplyDateModifier] ( @date varchar(32), @modifier varchar(32) ) RETURNS varchar(32) AS BEGIN
declare @return varchar(32), @type char
set @return=@date set @type=(substring(reverse(Lower(@modifier)),1,1))
if (@type='y') begin set @return=dbo.FormatDate(DATEADD(YEAR, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd') end
if (@type='m') begin set @return=dbo.FormatDate(DATEADD(MONTH, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd') end
if (@type='w') begin set @return=dbo.FormatDate(DATEADD(WEEK, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd') end
if (@type='d') begin set @return=dbo.FormatDate(DATEADD(DAY, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd') end
return @return
END
On utilise ici la fonction système DateAdd et la fonction vue précédemment FormatDate.