Jump to content


Photo

Unable To Retrieve Stored Procedure


  • Faça o login para participar
4 replies to this topic

#1 jcbasilio

jcbasilio

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:são Paulo
  • Interesses:SQL C#

Posted 28/01/2012, 23:52

Olá pessoal,

estou com um problemão.

Estou desenvolvendo um site. Ocorre que o banco de dados 'contém stored procedures' que funcionaram bem no localhost, mas não no provedor. No localhost o user era o 'root@localhost' e tinha todos os privilégios. No provedor uso um MySQL compartilhado, de modo que o usuário criado não tem todos privilégios. Estou há mais de mês tentando resolver, sem sucesso. O suporte do provedor não conseguiu ajudar. Só disse que era falha de programação. A procedure é:


DELIMITER $$
CREATE DEFINER=`rute`@`%` PROCEDURE `Autenticacao`(
IN pLOGIN VARCHAR(20),
IN pPASS VARCHAR(15),
OUT pSAID INT
)
BEGIN
SELECT COUNT(*) INTO pSAID
FROM mit.Usuario
WHERE Login = pLOGIN
AND Senha = pPASS;
END $$

sendo que a tabela usuario contém os valores corretos. Quando faço o login, é chamada a procedure `Autenticacao`, mas dá o erro abaixo:


Server Error in '/' Application.

ERRO Nro.:Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "use procedure bodies=false" with your connection string.


Já pesquisei e fiz alterações na 'procedure' e na 'connection string'.

Alguém pode ajudar?

Agradeço antecipadamente.

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 30/01/2012, 08:24

Esse rute@% é o usuário que o sistema usa?

#3 jcbasilio

jcbasilio

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:são Paulo
  • Interesses:SQL C#

Posted 30/01/2012, 11:14

Esse rute@% é o usuário que o sistema usa?


Olá Leo,

grato pela atenção.

Sim, rute é o usuário do DB. Como é um banco compartilhado, o usuário root não está disponível (ou um usuário interferiria nos dados dos outros). É política do provedor. O usuário rute tem todos os privilégios no meu banco conforme consulta abaixo (USAGE em todos bancos, ALL em meu banco, mit).

SHOW GRANTS FOR `rute`@`%`
Grants for rute@%
GRANT USAGE ON *.* TO 'rute'@'%' IDENTIFIED BY PAS...
GRANT ALL PRIVILEGES ON `mit`.* TO 'rute'@'%'

Apesar de ter todos privilégios não consigo, aparentemente, recuperar a PROCEDURE. Não sei o que fazer :-(

Agradeço o auxílio. Se tiver alguma outra pergunta, não hesite!

Abs.

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 30/01/2012, 11:48

Até onde eu sei, rodar stored procedures só requer permissão de EXECUTE. Veja:

http://dev.mysql.com...privileges.html

#5 loviss

loviss

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino

Posted 18/02/2012, 09:13

É política do provedor. O usuário rute temPosted Image todos os privilégios no meu banco conforme consulta abaixo .




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq