Danke an alle
Announcement
Collapse
No announcement yet.
Optimize Table Script Array durchlaufen
Collapse
X
-
Ganz quick and dirty, ungefähr so
PHP Code:for ($i=0; $i<count($mysql_test_array);$i++)
{
// mysql_query mit OPTIMIZE TABLE mit Tabellenname aus $mysql_test_array[$i] ausführen
}
"A common mistake that people make
when trying to design something completely foolproof
is to underestimate the ingenuity of complete fools."
>>> Douglas Adams, Mostly Harmless
-------------------------------------------------------
Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour
-
Originally posted by Sascha P. View PostGanz quick and dirty, ungefähr so
PHP Code:for ($i=0; $i<count($mysql_test_array);$i++)
{
// mysql_query mit OPTIMIZE TABLE mit Tabellenname aus $mysql_test_array[$i] ausführen
}
Mein Script sieht nun so aus:
PHP Code:<?php
include '../lib/mysql_test_array_table.php';
for ($i=0; $i<count($mysql_test_array);$i++)
{
$db->queryStmt("OPTIMIZE TABLE " . $mysql_test_array[$i]);
}
echo "Datenbank wurde optimiert";
?>
Es kommt dann bei mir jedoch zum MDB2Error:
MDB2 Error: syntax error
[OPTIMIZE TABLE ]
_doQuery: [Error message: Could not execute statement] [Last executed query: OPTIMIZE TABLE ] [Native code: 1064] [Native message: 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]
Comment
-
Hallo,
Originally posted by Sascha P. View Post...Die Namen der Tabellen stehen ja alle im mysql_test_array[x], also sollte es so gehen.
Besser wäre:
PHP Code:...
foreach (array_keys($mysql_test_array) as $tabName) {
// mysql_query mit OPTIMIZE TABLE mit Tabellenname $tabName ausführen
...
}
...
Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.
Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!
Comment
-
Originally posted by Falk Prüfer View PostHallo,
Nein, geht so nicht. Das Array ist kein indiziertes Array, sondern ein Assoziatives. Sprich die Tabellennamen sind hier nicht die Werte sondern die Schlüssel.
Besser wäre:
PHP Code:...
foreach (array_keys($mysql_test_array) as $tabName) {
// mysql_query mit OPTIMIZE TABLE mit Tabellenname $tabName ausführen
...
}
...
Hallo Falk,
mein Script sieht nun so aus:
PHP Code:<?php
include '../common.php';
include '../lib/mysql_test_array_table.php';
foreach (array_keys($mysql_test_array) as $tabName) {
{
$db->queryStmt("OPTIMIZE TABLE " . $tabName);
}
echo "Datenbank wurde optimiert";
?>
( ! ) Parse error: syntax error, unexpected $end in /var/www/test/scripts/optimize_tables.php on line 11
Woran liegt das?
Comment
-
Originally posted by Pillemon View PostPHP Code:foreach (array_keys($mysql_test_array) as $tabName) {
"A common mistake that people make
when trying to design something completely foolproof
is to underestimate the ingenuity of complete fools."
>>> Douglas Adams, Mostly Harmless
-------------------------------------------------------
Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour
Comment
-
In welchen Fällen, bzw. wann und wie oft sollte man überhaupt OPTIMIZE TABLE ausführen? Die mySQL-Dokumentation ist diesbezüglich ja leider recht unkonkret:
"In most setups, you need not run OPTIMIZE TABLE at all."
Ist während der Optimierung die Tabelle für andere Anfragen gesperrt? Was passiert, falls der Datenbankserver abstürzen sollte? Muss man vorher ein Backup machen? Alles Fragen, die mich bisher davon abgehalten haben, mich näher mit Tabellendefragmentierung auseinanderzusetzen ...
Comment
Comment