Instrução CHECK TABLE do MySQL

Resumo : neste tutorial, você aprenderá como usar a CHECK TABLEinstrução MySQL para verificar se há erros em uma ou mais tabelas ou visualizações.

Introdução à instrução CHECK TABLE do MySQL

A CHECK TABLEinstrução permite que você verifique se há erros em uma ou mais tabelas.

O seguinte mostra a sintaxe da CHECK TABLEinstrução:

CHECK TABLE tbl_name, [,table_name]...
[option]Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

Primeiro, especifique um ou mais nomes das tabelas que você deseja verificar quanto a erros.

Segundo, especifique uma ou mais opções que podem ser:

  • FOR UPGRADE
  • QUICK
  • FAST
  • MEDIUM
  • EXTENDED
  • CHANGED

A CHECK TABLEinstrução funciona para tabelas InnoDB , MyISAM , ARCHIVE e CSV .

O mecanismo de armazenamento pode aceitar ou ignorar a opção da CHECK TABLEinstrução.

Tipo Mecanismos de armazenamento Significado
QUICK Aplica-se a InnoDB& MyISAM Não verifique as linhas em busca de links incorretos.
FAST Aplica-se ao MyISAM. Ignorado por InnoDB. Verifique apenas as tabelas que não foram devidamente fechadas.
CHANGED Aplica-se ao MyISAM. Ignorado por InnoDB. Verifique as tabelas que foram modificadas desde a última verificação ou que não foram fechadas corretamente.
MEDIUM Aplica-se ao MyISAM. Ignorado por InnoDB. Digitalize as linhas para verificar a validade dos links excluídos. Este processo também calcula uma soma de verificação de chave para as linhas e a compara com a soma de verificação calculada para as chaves.
EXTENDED Aplica-se ao MyISAM. Ignorado por InnoDB. Execute uma pesquisa completa de todas as chaves associadas a cada linha. Isso garante 100% de consistência na tabela, mas é um processo demorado.

A CHECK TABLEdeclaração também verifica as visualizações em busca de problemas. Por exemplo, pode verificar se uma visualização faz referência a tabelas que não existem.

O CHECK TABLEretorna um conjunto de resultados que inclui quatro colunas:

Coluna Valor
Table O nome da tabela que foi verificada
Op Sempre check
Msg_type statuserrorinfonote, ou warning
Msg_text Uma mensagem informativa

A CHECK TABLEinstrução pode gerar diversas linhas de informações para cada tabela ou visualização verificada. A última linha deve ter um Msg_typevalor de statuse Msg_textnormalmente deve serOK

Exemplos de instruções MySQL CHECK TABLE

Vejamos alguns exemplos de uso da CHECK TABLEdeclaração.

1) Usando o CHECK TABLE para verificar erros nas tabelas

Primeiro, faça login no servidor de banco de dados MySQL usando a conta root:

mysql -u root -pLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Ele solicitará que você insira a senha. Digite a senha válida para fazer login:

Enter password: ********Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, mude o banco de dados atual para classicmodels o banco de dados de amostra :

use classicmodels;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, verifique as tabelas customerse productsverifique se há erros:

CHECK TABLE customers, products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-------------------------+-------+----------+----------+
| Table                   | Op    | Msg_type | Msg_text |
+-------------------------+-------+----------+----------+
| classicmodels.customers | check | status   | OK       |
| classicmodels.products  | check | status   | OK       |
+-------------------------+-------+----------+----------+
2 rows in set (0.03 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A saída mostra que ambas as tabelas não apresentam erros.

2) Usando o MySQL CHECK TABLE para verificar erros em uma visualização

Primeiro, crie um banco de dados chamado teste:

CREATE DATABASE IF NOT EXISTS test;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, mude para o testbanco de dados:

USE test;Linguagem de código:  PHP  ( php )

Terceiro, crie uma tabela chamada employeesno testbanco de dados:

CREATE TABLE employees(
  id INT AUTO_INCREMENT PRIMARY KEY, 
  first_name VARCHAR(255) NOT NULL, 
  last_name VARCHAR(255) NOT NULL, 
  email VARCHAR(255) NOT NULL, 
  phone VARCHAR(255) NOT NULL
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Quarto, crie uma view chamada contactscom base na employeestabela:

CREATE VIEW contacts AS 
SELECT 
  concat_ws(' ', first_name, last_name) as name, 
  email, 
  phone 
FROM 
  employees;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Quinto, solte a tabela employees:

DROP TABLE employees;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por fim, verifique o contactserro na visualização:

CHECK TABLE contacts\G;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

*************************** 1. row ***************************
   Table: test.contacts
      Op: check
Msg_type: Error
Msg_text: View 'test.contacts' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
*************************** 2. row ***************************
   Table: test.contacts
      Op: check
Msg_type: error
Msg_text: Corrupt
2 rows in set (0.00 sec)

ERROR:
No query specifiedLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que \Ginstrui o mysql a exibir o resultado em um formato vertical mais legível, em vez de um layout horizontal tradicional baseado em tabela.

A primeira linha indica que a visualização faz referência a uma tabela inválida e a segunda linha especifica que a visualização está corrompida.

Resumo

  • Use a CHECK TABLEinstrução MySQL para verificar se há erros em uma ou mais tabelas ou visualizações.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *