:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Tabellen in einer MySQL-Datenbank auf Fehler prüfen |
Beispielaufgabe
Tabellen in einer MySQL-Datenbank auf Fehler prüfen.
Beschreibung
Die Funktion mysqlCheckTables() prüft in einer Datenbank alle Tabellen auf Fehler.
Als Rückgabewert liefert die Funktion ein Array mit folgenden Werten für jede analysierte Tabelle.
- Table: Der Tabellenname in der Form <Datenbankname>.<Tabellenname>
- Op: Die Art der Aufgabe - hier immer check
- Msg_type: Den Typ der Meldung - status, error, info oder warning
- Msg_text: Die zurückgelieferte Meldung
Folgendes ist bei dieser Funktion zu beachten:
- Der MySQL-Befehl ANALYZE TABLE funktioniert nur bei MyISAM- und InnoDB-Tabellen.
<?PHP
function mysqlCheckTables( $database ) {
$sql = "SHOW TABLES FROM " . $database;
$result = @mysql_query( $sql );
$data = array();
$x = 0;
while( ( $row = @mysql_fetch_array( $result, MYSQL_NUM ) ) == true ){
$sql = "CHECK TABLE " . $database . '.' . $row[0];
$analyze = @mysql_query( $sql );
$rowFetch = @mysql_fetch_array( $analyze, MYSQL_ASSOC );
$data[$x]['Table'] = $rowFetch["Table"];
$data[$x]['Op'] = $rowFetch["Op"];
$data[$x]['Msg_type'] = $rowFetch["Msg_type"];
$data[$x]['Msg_text'] = $rowFetch["Msg_text"];
$x++;
}
return $data;
}
?>
|
Anwendungsbeispiel
<?PHP
$conn = @mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$conn) {
echo "Fehlende Verbindung zur DB: " . mysql_error();
exit;
}
// Datenbankname
$database = 'selfphp-testdb';
print_r( mysqlCheckTables( $database ) );
?>
|
Ausgabebeispiel: Browseransicht
Array
(
[0] => Array
(
[Table] => mysql.columns_priv
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[1] => Array
(
[Table] => mysql.db
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[2] => Array
(
[Table] => mysql.event
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[3] => Array
(
[Table] => mysql.func
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[4] => Array
(
[Table] => mysql.general_log
[Op] => check
[Msg_type] => Error
[Msg_text] => You can't use locks with log tables.
)
[5] => Array
(
[Table] => mysql.help_category
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[6] => Array
(
[Table] => mysql.help_keyword
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[7] => Array
(
[Table] => mysql.help_relation
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[8] => Array
(
[Table] => mysql.help_topic
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[9] => Array
(
[Table] => mysql.host
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[10] => Array
(
[Table] => mysql.ndb_binlog_index
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[11] => Array
(
[Table] => mysql.plugin
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[12] => Array
(
[Table] => mysql.proc
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[13] => Array
(
[Table] => mysql.procs_priv
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[14] => Array
(
[Table] => mysql.servers
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[15] => Array
(
[Table] => mysql.slow_log
[Op] => check
[Msg_type] => Error
[Msg_text] => You can't use locks with log tables.
)
[16] => Array
(
[Table] => mysql.tables_priv
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[17] => Array
(
[Table] => mysql.time_zone
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[18] => Array
(
[Table] => mysql.time_zone_leap_second
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[19] => Array
(
[Table] => mysql.time_zone_name
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[20] => Array
(
[Table] => mysql.time_zone_transition
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[21] => Array
(
[Table] => mysql.time_zone_transition_type
[Op] => check
[Msg_type] => status
[Msg_text] => OK
)
[22] => Array
(
[Table] => mysql.user
[Op] => check
[Msg_type] => warning
[Msg_text] => 1 client is using or hasn't closed the table properly
)
)
|
|
|
|
|
|
|