2010-03-07 26 views
14

Veritabanı kullanıyorum MySQL 5.1. Web.config'de doğru bağlantıları belirttiğimi söyledim. ancak web uygulamamı çalıştırdığımda. Bu istisna atar: -Tam olarak bu hata nedir?

MySql.Data.MySqlClient.MySqlException: Bir tanımlayıcısı olarak belirtilen kullanıcı ('root' @ '%')

Herhangi bir yardım yok. Neden bunu alıyorum?

cevap

28

Eğer yükleme muhtemelen ihtiva olmuştur saklı prosedürler için kaynak kodu "DEFINER = kök @ '%'" tanımının bir parçası olarak - Böyle bir değerlindirme:

create definer='root'@'%' procedure sp_test() begin end; 

sorunu Burada sisteminizde 'root' @ '%' için bir hesabınız yok. Bu kolayca gösterilebilir.

show grants for 'root'@'%'; 

Bunun geri bir hata mesajı ile gelecek bekliyoruz:

ERROR 1141 (42000): There is no such grant defined for user 'root' on host '%' 

düzeltme Saklanan prosedürlerin kaynağını değiştirmek için, ya da eksik hesap oluşturmaktır MySQL komut satırından :

grant all on *.* to 'root'@'%' identified by 'password' with grant option; 

genellikle her yerden erişilebilir böyle yüksek enerjili bir hesap olması iyi bir fikir değil, ama bu başka bir hikaye.

+0

+1 güzel! Kullanıcı adında ana bilgisayar belirtimiyle ilgili bir karalama vardı. Bunu sıralar mı diye göreceğiz. –

2

Bu saklı yordamda mı? O zaman belki this blog post yardım eder (benim için).

Tüm ayarlar iyiydi ve sorunun nedenini merak ediyordum. İlk aceleyle, sunucumuzda son zamanlarda xcache'nin olmasını istediğim gibi bir önbellek olabileceğini düşündüm.

Fakat durum böyle değildi. Hata, hayal bile edemeyeceğinden çok daha aptaldı. Bu belirli komut dosyası MySQL'e/için veri eklemek/almak için saklı bir yordamı kullanır. Sp'yi yaratan kullanıcı silinen kişiydi. Ve sorun buydu. MySQL açısından “Definer” terimi saklı yordamı oluşturan ve saklanması gereken kullanıcının çalıştırması gereken prosedürdür.

+0

Teşekkürler. Bağlantıda verilen çözümü denedim. Tüm veritabanını, oturum açmış kullanıcı (root) olarak yeniden oluşturdum. ama yine de aynı hata alıyor – Jango

+0

+1 - Sanırım Pekka haklı. Olayları daha detaylı açıklamaya çalışan başka bir cevap daha ekledim. – Martin

3

Bu cevabın çok geç geldiğini biliyorum, ancak herhangi bir hakkı değiştirme içermeyen bir çözüm buldum.

Depolanan Prosedürlerinize gidin ve DEFINER maddesini silin. Sunucu, giriş yaptığınız kullanıcı bilgileriyle eşleşen yeni bir DEFINER yazmalıdır.

Benim için çalıştı ...