sexta-feira, 6 de dezembro de 2013

ERROR 1356 (HY000)

Original post:  http://anothermysqldba.blogspot.com/2013/12/error-1356-hy000.html

A coisa mais importante para compreender quando chegando a um erro é tomar um momento e relaxar. 
Às vezes as pessoas se depara com um erro e tornar-se perturbado e frustrado. Respire fundo e relaxe. Às vezes, " A loucura é como a gravidade. Tudo o que precisa é de um empurrãozinho"e" Às vezes, as questões são complicadas e as respostas são simples . " 

O que é tudo isso? Bem, por exemplo, eu recentemente foi convidado para ajudar a resolver um problema que estava incomodando outro DBA. Nada quis dizer em desrespeito a todos para que DBA mas sendo com pressa as pessoas só têm vista para a resposta que está na frente deles e, em vez espiral para baixo em loucura . 

Aqui é o conceito geral da situação. 

Depois de fazer um mysqldump de um banco de dados que o usuário mudou-se para outro banco de dados para que outros possam ser os testes. A importação funcionou muito bem. No entanto, os usuários começaram a ver os erros quando eles tentaram consultar a partir de uma visão pré-construídos. 

mysql> SELECT * FROM <View_name> limite 1; 

ERROR 1356 (HY000): View '. <DB_NAME> <ViewName>' Referências mesa inválido (s) ou coluna (s) ou função (s) ou definidor / invoker de vista dos direitos falta usá-los 

A primeira reação foi assumir que o algo deu errado com a importação. Será que a vista ou, na verdade, as tabelas relacionadas corrompido? 

Não. 

Para resolver esse erro, a primeira coisa TODO era: mysql> show criar vista <View_Name> \ G 

Você provavelmente vai ver algo que começa assim: 
*************************** 1. linha *************************** 
Exibir: Visitantes 
 
Criar Exibição: CREATE ALGORITMO = DEFINER UNDEFINED = `<Some_user>` @ `<Some_host_or_IP>` SEGURANÇA SQL DEFINER VISTA 

Depois de ver que o definidor é: `<Some_user>` @ `<Some_host_or_IP>` você pode visualizar as subvenções para esse usuário. 

mysql> mostra bolsas para `<Some_user>` @ `<Some_host_or_IP>`; 

Acontece que a solução era exatamente o que o erro, disse em primeiro lugar: "definidor / solicitante de direitos vista a falta de usá-los" 

Para tornar mais fácil que você pode fazer um show subsídios no banco de dados onde já funciona e cópia da declaração de concessão, ou você pode analisar que tipo de permissões que você precisa para implementar no novo banco de dados para permitir a visão para coletar os dados necessários. 

Uma simples atualização de permissões para o usuário e que o erro se foi. 

" Às vezes, as respostas são simples . "