Page 1 of 1

Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-17 20:23
by 007killer
Hallo,

ich habe gerade ein kleines recht simples Script gebastelt, dass wäre das hier:

Code: Select all

<?
//Ã?berprüfen der Tabellen//
include("acp/_data_inc.php");
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Kann nicht zum MySQL server connecten!");
mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );
mysql_query("CHECK TABLE $tables");
echo mysql_error(); 
if (mysql_errno()) die("Fehler beim Ã?berprüfen.");    
echo("Ã?berprüfen abgeschlossen!<br>"); 

//Analysieren der Tabellen//
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Kann nicht zum MySQL server connecten!");
mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );
mysql_query("ANALYZE TABLE $tables");
echo mysql_error(); 
if (mysql_errno()) die("Fehler beim Analysieren.");    
echo("Analysieren abgeschlossen!<br>"); 

//Reparieren der Tabellen//
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Kann nicht zum MySQL server connecten!");
mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );
mysql_query("REPAIR TABLE TABLE $tables");
echo mysql_error(); 
if (mysql_errno()) die("Fehler beim Reparieren.");    
echo("Reparieren abgeschlossen!<br>"); 

//Optimieren der Tabellen//
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Kann nicht zum MySQL server connecten!");
mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );
mysql_query("OPTIMIZE TABLE $tables");
echo mysql_error(); 
if (mysql_errno()) die("Fehler beim Optimieren.");    
echo("Optimierung abgeschlossen!<br>"); 
?>

Die Variable "$tables" wird von der _data_inc.php geholt und hinter der "$tables" in der _data_inc.php stehen die ganzen Datenbanknamen. Wenn ich das Script jetzt auf meiner Seite aufrufe: siehe kommt die Fehlermeldung: "You have an error in your SQL syntax near '' at line 1Fehler beim Ã?berprüfen." Vielleicht könnt ihr mir helfen wodurch der Fehler kommt.

Danke im voraus 007killer

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-17 22:06
by niklas_
Zunächst der Hinweis / die Frage, warum du unnätigerweise die DB Verbindung 5 mal neu herstellst?!

Wie sind die Werte in $tables gespeichert?

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-17 22:31
by 007killer
hm... gute frage warum ich andauernd neu verbinde :D

Hier das in der _data_inc.php:

Code: Select all

$tables		=	'gbb_wars'; 'gbb_links'; 'gbb_partner'; 'gbb_sponsoren'; 'gbb_warergebnisse'; 'gbb_ligenarten'; 'gbb_user';
					'gbb_kommentare'; 'gbb_member_rvs'; 'gbb_member_cod'; 'gbb_member_et'; 'gbb_member_soe'; 'gbb_member_fr';
					'gbb_member_jop'; 'gbb_config';
EDIT: Ok jetzt gingen die ersten 2 Sachen schon mal. Bloß geht das Reparieren net mehr rofl.... siehe Link von oben !

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-18 14:25
by niklas_
lol? so kannst du doch keine variablen zuweisen!

$tables = "deinwert";

nicht mehr und nicht weniger!

Wenn du ; zwischen den tabellen haben willst dann muss es so laufen:
$tables = "tbl1;tbl2;tbl3"

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-18 15:32
by 007killer
Aber so wie ich es jetzt habe geht es trotzdem !?!?!?

SIEHE

Das kommt wenn ich die Datei aufrufe:

Ã?berprüfen abgeschlossen!
Analysieren abgeschlossen!
You have an error in your SQL syntax near 'TABLE gbb_wars' at line 1Fehler beim Reparieren.

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-18 16:44
by niklas_
Nein. Es wird 100% nur die gbb_wars upgedatet!
Du kannst ja testweise mal

Code: Select all

echo $tables;
machen.



zum optimize prob:

Code: Select all

$sql = 'OPTIMIZE TABLE `gbb_wars` '; 
mysql_query($sql); 

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-18 19:05
by 007killer
Hm.. Stimmt, aber mit einer anderen schreibweise klappts auch net was du da oben geschrieben hast: "$tables = "tbl1;tbl2;tbl3""

Re: Per Script die DB reparieren, analysieren u.s.w.

Posted: 2004-02-18 19:26
by oxygen
natürlich nicht, mysql erwartet ja auch nicht CHECK TABLE tabelle1; tabelle2 etc... sondern CHECK TABLE tabelle1 tabelle2 etc

wobei ich das alles für ausgesprochenen Unfug halte.