Ik heb een probleem met mysql waar ik nog geen oplossing voor heb gevonden.
Ik start mysql administrator
druk op Catalogs
Druk op een van die catalogs en dan krijg ik de volgende vermelding
"Could not fetch schema table status"
Ik kan ook geen backups meer nemen
Dit is plots gekomen.
Het rare is dat men ook geen velden meer kan wijzigen via
Mysql query omdat de "edit knop" uitgeschakeld is, maar men kan wel de velden wijzigen via de website.
Ik heb op de website van mysql gekeken maar voorlopig geen passende oplossing gevonden.
Met dank aan pqfrank en jonathan maar geloof me of niet ik heb reeds vaak gegooglet en kom steeds meer in de problemen met wat zij mij voorstellen.
Is er een mogelijkheid een backup te maken via een php programmatje?
Want ik denk er steeds meer over om de server plat te gooien en vanaf nul te herstarten. Als ik bekijk de uren en dagen dat ik nu reeds aan het zoeken ben om een oplossing te vinden kom ik er vlugger vanaf door een full format en dan alles herinstalleren. Juist nog de gegevens kunnen opslaan op een andere schijf vanop afstand.
Als dat mogelijk is dan zijn waarschijnelijk mijn problemen verleden tijd
@WesselB: Dat is redelijk bijdehand, zeker wanneer de ts met een corrupte database zit. Hoe denk jij op een veilige manier een dump te maken van een corrupte database? Weet je dan 100% zeker dat je de corruptie kwijtraakt? Dat lijkt mij van niet.
En dat PHP-scriptje dat met wat SQL-functies een kopie van een database probleert te maken, dat is natuurlijk de giller van de dag. Hier kun je __onmogelijk__ een goede en veilige backup mee maken.
Ontopic: Ik weet te weinig van MySQL om een oplossing te kunnen geven bij een corrupte database. MySQL heeft nogal wat problemen met het beschermen van data, hoewel dat basisfunctionaliteit hoort te zijn van DBMS. Vrijwel iedere DBMS is beter dan MySQL, bv. het reeds genoemde PostgreSQL of denk aan FireBird, een andere opensource DBMS.
Hoy allemaal,
Ik ben enkele dagen niet thuis geweest vandaar die late reactie.
Aan WesselB
ik had die dag via PHP zoeken "Backup" ingevoerd en het resultaat was nul. Misschien een tikfout. In iedergeval bedankt voor de medewerking. Ik heb de programma's uitgeprobeerd maar krijg steeds maar een deel van de backup. Ik heb dan geprobeerd om alleen maar tabel per tabel over te brengen maar bij de grootste tabel van ± 12 megabyte stopt hij halverwege en het is juist de tweede helft dat ik nodig heb want de eerste helft heb ik al.
Dit is een programma dat ik gevonden had op een Franse website en waarmee ik toevallig tot nu toe het beste resultaat heb gehad.
------------------------------------------------------------------------------------------
<?
/*************************************************/
/* SAUVEGARDE DE BASE DE DONNEES */
/* STRUCTURE ET CONTENU */
/* */
/*fichier : save_db.php */
/*création : stefsoft */
/*dernière modification : 02/12/2002 */
/* */
/*************************************************/
/*
utilisation:
sauvegarde simple
---> save_db.php?db=nom_de_la_base
sauvegarde avec drop
---> save_db.php?db=nom_de_la_base&drop=1
*/
/*************************************************/
/* DECLARATION DES VARIABLES */
/*************************************************/
/*-----------------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------------*/
//connexion à la base
@set_time_limit(0);
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter - Problème sur le 'Hostname' ou sur le 'User' ou sur le 'Password'");
@mysql_select_db("$db")
or die("Impossible de se connecter à la base ou nom de base inconnu");
//creation du fichier de sauvegarde (enregistrement en local)
header("Content-disposition: filename=$db.sql");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
$tables = mysql_list_tables($db);//Liste les tables d'une base de données.
echo $tables;
$num_tables = @mysql_numrows($tables);//Retourne le nombre de lignes d'un résultat
echo $num_tables;
$i = 0;
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);//Lit le nom de la table qui contient le champs spécifié
print "#\n";
print "# Contenu de la table \"$table\"\n";
print "#\n";
print "\n";
get_table_content($db, $table);
if (isset($tb) && ($table==$tb))
exit;
}
$i++;
}
mysql_close();
?>
-----------------------------------------------------------------------------------------
Kan iemand zien waarom het programma maar de helft van het bestand wegschrijft?
Aan pqFrank
Ik denk dat de database niet echt corrupt is maar dat om de een of andere reden iets gebeurt is met de connectie (in de register misschien tijdens het maandelijks opkuisen) tussen de Mysqlquery en de database en hetzelfde tussen Mysqladministrator en de database, aangezien ik de gegevens feilloos kan opvragen via mijn internetprogramma's en kan wijzigen via de internet programma's.
In iedergeval wens ik iedereen te danken voor de medewerking in tijd van problemen en hoop ik dat iemand mij een oplossing kan bieden.
Met PHP-scriptjes kun je geen veilige backup maken, dat is technisch onmogelijk. Gebruik mysqldump om een backup te maken, dat is de enige manier om dat veilig te doen. Zie de handleiding.
En wat bedoel jij met 'opkuisen' ? Ga jij 1x per maand de database opschonen? Dat is normaalgesproken zinloos, een miljoen records meer of minder maken echt niet uit. Tenzij het datamodel aan alle kanten rammelt, maar dan heb je een ander probleem.
Ik wil best mysqldump gebruiken maar ik kan de tabellen niet via mysqladministrator oproepen op de server want dan krijg ik de volgende fout "could not fetch schema table status"
Via Mysqlquery kan ik wel aan de tabelen maar kan ze niet wijzigen. Ik heb daar ook geprobeerd met die mysqldump maar hier terug krijg ik een foutmelding.
Ik heb op de website gekeken en zie het volgende
shell> mysqldump [options] db_name [tables]
Ik dacht dat ik dan naar de "Mysql Command Line Client" moest gaan maar als ik dat opstart zie ik
mysql>
Als ik dan "mysqldump naam van tabel" invoer dan komt er gewoon een pijltje eronder verder niks