2013-06-04 39 views
1

存儲過程的元數據:無法當我試圖執行從C#程序我得到這個錯誤檢索常規

Unable to retrieve stored procedure metadata for routine 'test'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string. 

這是連接字符串:

<add name="MySqlCS" connectionString="Data Source=192.168.x.x;Initial Catalog=z;Persist Security Info=True;User ID=y;Password=y providerName="MySql.Data.MySqlClient"/> 

然後我嘗試添加該"check parameters=false"

而且我得到這個:

Access denied for user 'y'@'pcname.domain.local' (using password: YES) 

和新的配置是:

<add name="MySqlCS" connectionString="Data Source=192.168.x.x;Initial Catalog=z;Persist Security Info=True;User ID=y;Password=y CheckParameters=false" providerName="MySql.Data.MySqlClient"/> 

我可以從MySQL工作臺具有相同的憑據,沒有問題的連接都沒有。

下面是C#代碼:

public static DataSet GetTest(string cname) 
     { 
      try 
      { 
       OpenConnection(); 


       DataTable[] tables = new DataTable[2]; 


       IDbCommand cmd = myConnection.CreateCommand(); 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.CommandText = "test"; 

       IDataParameter parCode = cmd.CreateParameter(); 
       parCode.ParameterName = "Client"; 
       parCode.DbType = DbType.String; 
       parCode.Value = cname; 
       parCode.Direction = ParameterDirection.Input; 

       cmd.Parameters.Add(parCode); 

       //cmd.ExecuteReader(); 

       IDataReader dr = cmd.ExecuteReader(); 
       DataSet dset = new DataSet(); 
       dset.Load(dr, LoadOption.PreserveChanges, tables); 

       return dset; 

      } 
      finally 
      { 
       CloseConnection(); 
      } 
     } 

回答

1

你確定你擁有所有的required dll's libraries到位。

+0

那麼,我有MySql.Data.dll,它的參考,因爲它應該... –

+0

你用root用戶訪問? – Microtechie

+0

不是。它是新創建的用戶。 –

1

嘗試SQL SECURITY INVOKER在您的存儲過程:

CREATE DEFINER=`prueba`@`%` PROCEDURE `selectEsquemaVacio`() 
    SQL SECURITY INVOKER 
BEGIN 
    SELECT cve_esquema FROM esquema e ORDER BY cve_esquema; 

    SELECT cve_ent,cve_mun,cve_loc,esquema,tipo,nom_loc 
      FROM localidades l 
      where esquema is null or esquema='' 
      ORDER BY cve_ent,cve_mun,cve_loc; 
END 
-1

UseProcedureBodies = False;CheckParameters = false

這是工作。

+1

ypu提供一些關於你的答案的更多信息來解釋它? – bish

相關問題