the support reparar mysqlcheck for engine ejemplo doesn datos mysql sql

support - reparar base de datos mysql windows



Reparar todas las tablas de una vez (8)

¿Cómo verificar todas las tablas en la base de datos de una vez?

En lugar de escribir la check table ''''tablename''''; consulta check table ''''tablename''''; para todas las tablas una a una.

¿Hay algún comando simple como check all o algo así?


El comando es este:

mysqlcheck -u root -p --auto-repair --check --all-databases

Debe proporcionar la contraseña cuando se le solicite,

o puede ejecutar este pero no se recomienda porque la contraseña está escrita en texto claro:

mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases


El siguiente comando funcionó para mí usando el símbolo del sistema (como administrador) en Windows:

mysqlcheck -u root -p -A --auto-repair

Ejecute mysqlcheck con el usuario raíz, solicite una contraseña, verifique todas las bases de datos y repare automáticamente las tablas dañadas.


Me gusta esto para un simple control del caparazón:

mysql -p<password> -D<database> -B -e "SHOW TABLES LIKE ''User%''" / | awk ''NR != 1 {print "CHECK TABLE "$1";"}'' / | mysql -p<password> -D<database>


No es necesario escribir la contraseña, solo use uno de estos comandos (que se explica por sí mismo):

mysqlcheck --all-databases -a #analyze mysqlcheck --all-databases -r #repair mysqlcheck --all-databases -o #optimize


No hay un comando predeterminado para hacer eso, pero puede crear un procedimiento para hacer el trabajo. Recorrerá las filas de information_schema y llamará a REPAIR TABLE ''tablename''; por cada fila CHECK TABLE aún no es compatible con las declaraciones preparadas. Aquí está el ejemplo (reemplace MYDATABASE con su nombre de base de datos):

CREATE DEFINER = ''root''@''localhost'' PROCEDURE MYDATABASE.repair_all() BEGIN DECLARE endloop INT DEFAULT 0; DECLARE tableName char(100); DECLARE rCursor CURSOR FOR SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA`=DATABASE(); DECLARE CONTINUE HANDLER FOR SQLSTATE ''02000'' SET endloop=1; OPEN rCursor; FETCH rCursor INTO tableName; WHILE endloop = 0 DO SET @sql = CONCAT("REPAIR TABLE `", tableName, "`"); PREPARE statement FROM @sql; EXECUTE statement; FETCH rCursor INTO tableName; END WHILE; CLOSE rCursor; END


Use la siguiente consulta para imprimir las declaraciones de REPAIR SQL para todas las tablas dentro de una base de datos:

select concat(''REPAIR TABLE '', table_name, '';'') from information_schema.tables where table_schema=''mydatabase'';

Después de eso, copie todas las consultas y ejecútelas en mydatabase .

Nota: reemplace mydatabase por el nombre de base de datos deseado



para hosts plesk, uno de ellos debería hacer: (ambos hacen lo mismo)

mysqlrepair -uadmin -p$(cat /etc/psa/.psa.shadow) -A # or mysqlcheck -uadmin -p$(cat /etc/psa/.psa.shadow) --repair -A