Resumo : neste tutorial, você aprenderá como usar a CHECK TABLE
instruçã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 TABLE
instrução permite que você verifique se há erros em uma ou mais tabelas.
O seguinte mostra a sintaxe da CHECK TABLE
instruçã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
TABLE
instrução funciona para tabelas InnoDB , MyISAM , ARCHIVE e CSV .
O mecanismo de armazenamento pode aceitar ou ignorar a opção da CHECK TABLE
instruçã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
TABLE
declaraçã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
TABLE
retorna um conjunto de resultados que inclui quatro colunas:
Coluna | Valor |
---|---|
Table |
O nome da tabela que foi verificada |
Op |
Sempre check |
Msg_type |
status , error , info , note , ou warning |
Msg_text |
Uma mensagem informativa |
A CHECK
TABLE
instrução pode gerar diversas linhas de informações para cada tabela ou visualização verificada. A última linha deve ter um Msg_type
valor de status
e Msg_text
normalmente deve serOK
Exemplos de instruções MySQL CHECK TABLE
Vejamos alguns exemplos de uso da CHECK
TABLE
declaraçã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 -p
Linguagem 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 customers
e products
verifique 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 test
banco de dados:
USE test;
Linguagem de código: PHP ( php )
Terceiro, crie uma tabela chamada employees
no test
banco 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 contacts
com base na employees
tabela:
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 contacts
erro 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 specified
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que \G
instrui 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 TABLE
instrução MySQL para verificar se há erros em uma ou mais tabelas ou visualizações.