Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
Soltar índices --temporales-- en Mysql/Mariadb

Estoy tratando de recuperar una tabla InnoDB semi corrupta. Noté el problema al intentar agregar un nuevo índice a la tabla.

 ALTER TABLE `<table>` ADD INDEX `<name>` ERROR 1712 (HY000): Index "TEST008"--temporary-- is corrupted

La check table <table> EXTENDED no detecta el problema.

 +---------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+-------+----------+----------+ | <table> | check | status | OK | +---------------+-------+----------+----------+

He intentado eliminar el índice corrupto usando la tabla ALTER TABLE DROP INDEX "TEST008"--temporary--\ pero termina con

 ERROR 1091 (42000): Can't DROP '"TEST008"--temporary--'; check that column/key exists

¿Estoy obligado a recrear la tabla usando, por ejemplo, OPTIMIZE ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Estoy de acuerdo con @ nbk , si no puede deshacerse de un índice dañado, deberá reconstruir la tabla. ¿Haces copias de seguridad ocasionales? En el ejemplo, literalmente detengo el servicio de la base de datos y copio todo el directorio de la base de datos, incluido el binario MariaDB y todo. La redundancia parece una exageración hasta que la necesitas.

La forma más básica de lograr la reconstrucción de la tabla es usando lo siguiente:

 INSERT INTO `table_new` SELECT * FROM `table_old`;

Hay algunos hilos flotando en la web sobre cómo hacerlo más rápido, aunque este lo pude probar sin errores en MariaDB. Simplemente cambie el nombre de la tabla anterior en caso de que encuentre un mejor enfoque después de reconstruir la tabla. Recientemente actualicé algunas tablas de bases de datos que creé hace una década después de que alguien me dio un mal consejo sobre las convenciones de nomenclatura y ahora puedo expandir en gran medida la funcionalidad de ese software si es necesario.

¡Buena suerte!

over 4 years ago · Santiago Trujillo Relatório

0

Debe verificar el estado de los índices que no se mostrarán en CHECK TABLE .

Para hacer eso, intente lo siguiente

 SHOW VARIABLES LIKE 'userstat'; SET GLOBAL USERSTAT = ON; -- just to get all columns used from the stats table -- SHOW COLUMNS FROM `INFORMATION_SCHEMA`.`INDEX_STATISTICS` -- get all indices just in case SELECT * FROM `INFORMATION_SCHEMA`.`INDEX_STATISTICS`; -- get all indices for the table SELECT * FROM `INFORMATION_SCHEMA`.`INDEX_STATISTICS` WHERE `TABLE_NAME` = 'yourTable';

Eso aclarará lo que está indexado y lo que no está en sus tablas.

Otra cosa es que cuando agrega/elimina índices, es mejor usar marcas como \ TEST008`` en lugar de "TEST008" . Si esto tampoco funciona... clone/copie el contenido de la tabla, suéltelo y vuelva a crearlo.

 CREATE TEMPORARY TABLE `backupTable` SELECT * FROM `yourTable`;

Para obtener información adicional, lea Crear tabla temporal

Asegúrese de que esto suceda, ya que esta tabla de memoria podría fallar debido al tamaño del índice. Si eso sucede, debe aumentar o cambiar el algoritmo de indexación HASH en uso.

Si todo funciona como se esperaba, AGREGAR las líneas de la tabla temporal en la siguiente declaración

Nota : asegúrese de agregar todos los campos que faltan

 DROP TABLE IF EXISTS `yourTable`; CREATE TABLE `yourTable`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, -- other columns PRIMARY KEY(`id`) ) Engine=InnoDB; -- or extend this with collation, and other instructions INSERT INTO `yourTable` SELECT * FROM `backup`;

Esto debería funcionar.

La solución del último caso es eliminar del sistema de archivos la tabla InnoDB, pero dudo que este sea el caso.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda