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 . "
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 . "