maze92
Little Overclocker
|
Hey, Ich bin recht neu auf dem gebiet scripte und mysql, hab mir aber ein kleines script gebastelt, wenn ich die befehle ganz normal eingebe funktioniert es, aber im script wills net funktionieren... mysql -h localhost -u root -pPASS
SELECT
table_schema AS 'Datenbankname',
Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ;
Ausgabe sollte so aussehen: +--------------------+------------+------------+-------------+----------------------+
| Datenbankname | Daten (MB) | Index (MB) | Gesamt (MB) | Freier Speicher (MB) |
+--------------------+------------+------------+-------------+----------------------+
| information_schema | 0.000 | 0.009 | 0.009 | 0.000 |
| mysql | 0.556 | 0.097 | 0.652 | 0.001 |
| ownclouddb | 3.328 | 1.469 | 4.797 | 168.000 |
| performance_schema | 0.000 | 0.000 | 0.000 | 0.000 |
+--------------------+------------+------------+-------------+----------------------+
4 rows in set (0.01 sec)
Aber wenn Ich es ausführe funktioniert zwar der login aber nicht mehr. im endeffekt schaut es dann so aus: mzengerer@srv:~$ ./sql-quota.sh
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7786
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ^CCtrl-C -- exit!
Aborted
./sql-quota.sh: Zeile 3: SELECT: Kommando nicht gefunden.
./sql-quota.sh: Zeile 4: table_schema: Kommando nicht gefunden.
./sql-quota.sh: Zeile 5: Syntaxfehler beim unerwarteten Wort »SUM«
./sql-quota.sh: Zeile 5: ` Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)','
mzengerer@srv:~$
Irgendwelche Ideen dazu? lg, maze92
|
COLOSSUS
AdministratorGNUltra
|
#!/bin/bash
mysql -h localhost -u root -pPASS <<EOF
SELECT
table_schema AS 'Datenbankname',
Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ;
EOF
So sollte es klappen. Hab keine mysql-Shell in Reichweite, um das auszuprobieren.
|
-=Willi=-
The Emperor protects
|
Erklärung dazu warums nicht funktioniert: Jede Zeile in einem Bash-Script wird für sich ausgeführt. In deinem Script öffnest du in der ersten Zeile eine MySQL-Shell. Wenn du mit Ctrl+C dann rausgehst gehts ist der Befehl `mysql` abgeschlossen und es geht mit der zweiten Zeile, nämlich SELECT, weiter. Das ist etwas, was die Shell nicht interpretieren kann. Deshalb "SELECT: Kommando nicht gefunden.". Du musst also dem Befehl `mysql` die Query irgendwie anders mitgeben was mit der von COLOSSUS gezeigten Here-Document-Syntax beispielweise geht.
|