per shellscript/crontab daten aus sql datenbank loeschen

M

Midifan

Grünschnabel
Hallo,
Ich würde gerne aus meiner MySql DB per Crontab & Shellscript daten aus der Datenbank loeschen. also alles was aelter als 5 Monate ist bzw. wäre mir eine genaue anzahl an tagen vielleicht sogar lieber aber zuerst sollte dies hier mal funktionieren.
und hab mir dazu folgendes überlegt
clean.sh
Code:
#!/bin/bash
MYYEAR=`date '+%Y'`
MYMONTH=`date '+%m'`
MYDATE=`date '+-%d 00:00:00'`
# (( MYYEAR = MYYEAR - 1 ))

if [ $MYMONTH -lt 5 ]; then
        (( MYYEAR = MYYEAR -1 ))
        (( MYMONTH = 12 - 5 + `date '+%m'`))
else
        (( MYMONTH = MYMONTH - 5 ))
fi

echo $MYYEAR"-"$MYMONTH$MYDATE
/opt/lampp/bin/mysql -u root --password=blabla -e 'delete from license_usage where flmusage_date < $MYYEAR-$MYMONTH-$MYDATE' licenses_indientest

crontab schaut so aus
Code:
05 00 * * * /root/clean.sh

Edit: jetzt hab ich die fehlermeldung vom testen vergessen.
>Error 1054 (42s22) at line1: Unknown Column '$MYYEAR' in 'where clause'

und es funktioniert nicht..habe ich irgendwo einen denkfehler oder liegts an der syntax? ich bitte um Hilfe :)

Ps: System ist ein Suse Linux 9.3 mit der aktuellesten Xampp distribution 1.53a.

Danke im vorraus für hilfreiche beiträge :))
 
Zuletzt bearbeitet:
Hallo,

-e 'delete from.....$MYYEAR...'

ist in Apostrophe gesetzt. Der Shell hast Du damit gesagt, dass sie nichts, aber auch gar nichts auf der Kommandozeile auswerten darf, auch keine Variablen.

Versuchs mal mit doppelten Anführungsstrichen :oldman

Gruß
 
ok, jetzt gibts keine fehlermeldung mehr.funktionieren tuts noch immer nicht. kann es daran liegen das bei mir die zeit in einem eigenen feld gespeichert wird? sprich flm_usagedate hat das format yyyy-mm-dd und es gibt noch ein spalte flmusage_time mit dem format hh:mm:ss ?
 
Ehrlich gesagt: keine Ahnung. Ich weiß nicht viel über MySQL.
Es kann aber natürlich sein. Deinem "date"-Kommando kannst Du ja aber genau das Format mitgeben, das Du haben möchtest.

Gruß
 
ok, das ändert genau nix. unter phpmyadmin muss man das date oder eben text zb. mit 'Text' kennzeichnen. vielleicht liegts ja daran. aber wenn du sagst das unter ' ' alle variablen von oben ausschließt?
wie soll den das funktionieren oder könnte ich zb.
"befehl ' " variablen " ' restlicher befehl " machen?
 
Hallo

Das ist ja schon mehr Mysql-Thema, womit ich mich schon lange nicht mehr beschäftige.
Aber wenn du ' übergeben willst, kannst du das in der Variablen z.B. so machen:
Code:
$ A="'TEST'"; echo $A
'TEST'

Gruß Wolfgang
 
Wolfgang schrieb:
Hallo

Das ist ja schon mehr Mysql-Thema, womit ich mich schon lange nicht mehr beschäftige.
Aber wenn du ' übergeben willst, kannst du das in der Variablen z.B. so machen:
Code:
$ A="'TEST'"; echo $A
'TEST'

Gruß Wolfgang

ok, wenn ich jetzt das datum übergeben will..

$ A ="'Date'"; echo $A wird mir aber 'Date' zurückgeben und net '07-20' oder?

dh. ich muss am "befehl '" variable "' resttext" machen right?
ich bin mir net sicher warum es net funktioniert, deswegen hab ichs in shell skripte reingegeben. wennst magst verschiebst das thema halt.
 

Ähnliche Themen

sed im script per crontab

Problem im Backupscript

Bei PostgreSQL als anderer als der angemeldete Nutzer verbinden - Wo liegt der Fehler

proFTPd Fehler in Verbindung mit mySQL

Mysql connect Problem

Zurück
Oben