PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Per Bash-Script eine MySQL Datenbank-Tabelle leeren lassen



Andre86_bn
15.06.06, 01:05
Nabend,
ich habe ein Problem und zwar;

Wollte ich mir ein Bash-Script basteln was per Cron gesteuert werden würde und in bestimmten Abständen in der MySQL per 'root' von einer bestimmten Datenbank bestimmte Tabellen komplett leert. Nicht löscht sondern leert :ugly:

Nur leider kenne ich nicht alle Befehle dafür und Google hat mich da auch kein Stück weitergebracht, also hoffe ich hier auf Hilfe.

So sieht mein Script bissher aus:

#!/bin/bash
mysql --host=localhost --port=3306 --protocol=socket --socket=/var/run/mysqld/mysqld.sock --user=root --password=*** --database=usr_web2_1

echo "#######################################"
echo "# MySQL-Datenbank erfolgreich geleert #"
echo "#######################################"
Soweit dürfte da alles stimmen, aber wie gesagt weiter komme ich leider nicht :confused: :(


MfG:
André86

P.S. Ich hoffe ich hab das richtige Forum erwischt :rolleyes:

sirmoloch
15.06.06, 01:27
echo "DROP TABLE $karl_heinz" | mysql --mysql-optionen-nach-deinem-belieben

Danach suchst du. ;)

chrigu
15.06.06, 06:43
echo "DROP TABLE $karl_heinz" | mysql --mysql-optionen-nach-deinem-belieben

Danach suchst du. ;)
Wäre es nicht eher TRUNCATE, um die Tabelle nur zu leeren?

Andre86_bn
15.06.06, 11:21
Das mit dem 'DROP TABLE' hat leider nicht gefunzt:


./mysql-cleaner.sh
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
#######################################
# MySQL-Datenbank erfolgreich geleert #
#######################################

Und das mit dem 'TRUNCATE' hat auch nicht gefunzt, kriege die selbe Fehlermeldung.

sirmoloch
15.06.06, 12:44
Wäre es nicht eher TRUNCATE, um die Tabelle nur zu leeren?

Oh, Verzeihung, natürlich ists nicht DROP. Ich hatte mich wohl ein wenig verlesen...;)

Versuchs mal mit "DELETE FROM $tabelle". Die Syntax vom DROP war definitiv richtig, du musst da irgendwas falsch eingetippt haben.

Andre86_bn
15.06.06, 13:21
Irgendwie verstehe ich es langsam nicht mehr, kriege wieder n Fehler:


./mysql-cleaner.sh
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
#######################################
# MySQL-Datenbank erfolgreich geleert #
#######################################

Roger Wilco
15.06.06, 14:20
Dein SQL-Query ist falsch. Offensichtlich. Da du uns den aber nicht zeigts, werden wir dir nicht helfen können/wollen.

Andre86_bn
15.06.06, 15:51
Wie :confused:
Ich bin da noch nicht so fit drinne :)

Also was genau wollt/braucht ihr denn jetzt :rolleyes:

Diozaka
15.06.06, 16:09
Wie sieht das Script jetzt genau aus?

Andre86_bn
15.06.06, 16:30
So sieht das Script bis jetzt aus:


#!/bin/bash
echo "DELETE FROM $Tabellenname" | mysql --host=localhost --port=3306 --protocol=socket --socket=/var/run/mysqld/mysqld.sock --user=root --password=*** --database=usr_web2_1

echo "#######################################"
echo "# MySQL-Datenbank erfolgreich geleert #"
echo "#######################################"

Roger Wilco
15.06.06, 18:45
mysql --user=root --password=*** --database=usr_web2_1 -e 'TRUNCATE TABLE $Tabellenname'

LKH
15.06.06, 19:26
Hi,

wo wird den $Tabellename ein Wert zugewiesen? Wahrscheinlich schickst du "DELETE FROM" an die DB. Das führt zu einem Fehler, logisch. Denn hinter FROM muss der Tabellenname stehen.

sirmoloch
15.06.06, 19:27
Pack das Passwort doch bitte in deine ~/.my.cnf. Nicht jeder, der auf der Kiste ist, muss das Passwort kennen. Danke.

Andre86_bn
15.06.06, 21:19
Pack das Passwort doch bitte in deine ~/.my.cnf. Nicht jeder, der auf der Kiste ist, muss das Passwort kennen. Danke.
Brauch ich nichmal umbedingt ^^
Habe nur alleine Zugriff auf die Kiste :>



mysql --user=root --password=*** --database=usr_web2_1 -e 'TRUNCATE TABLE $Tabellenname'
Habs damit geschafft, is nur ein Fehler drinne gewesen :cool:


-e 'TRUNCATE TABLE $Tabellenname' <- -> -e 'TRUNCATE TABLE Tabellenname'


Danke an alle die mir bei dem Problem geholfen haben :D