URL: https://www.overclockers.at/coding-stuff/bash-script-um-mysql-qouta-anzeigen-zu-lassen_242177/page_1 - zur Vollversion wechseln!
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...
Code: SHELLmysql -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 ;
Code:+--------------------+------------+------------+-------------+----------------------+ | 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)
Code: SHELLmzengerer@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:~$
Code: SHELL#!/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
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.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025