2013-11-27 7 views
5

में काम नहीं कर रहा है मैंने इस समस्या पर बहुत कुछ खोजा है लेकिन समाधान नहीं मिला।माइस्क्ल संग्रहीत कार्यवाही: DEFINER = `root` @`% `स्थानीयहोस्ट

मैं संग्रहीत प्रक्रिया का उपयोग कर रहा हूँ:

DELIMITER $$ 

CREATE DEFINER=`root`@`%` PROCEDURE `GetImages`(
in search Varchar(80) 
) 
BEGIN 
select 
image_path 
from check_images 
where checkNumber=search; 

END 

यह स्थानीय होस्ट में काम नहीं कर रहा है और निम्नलिखित त्रुटि हो रही है:

Error Number: 1449

The user specified as a definer ('root'@'%') does not exist

लेकिन अगर मैं "स्थानीय होस्ट" ('जड़' के साथ% चिह्न की जगह @ 'localhost') तो सब कुछ सही काम करता है। इसके अलावा मुझे संग्रहीत प्रक्रिया को बदलने की अनुमति नहीं है। तो कृपया मुझे सबसे अच्छा समाधान बताएं कि मैं इस समस्या को कैसे दूर कर सकता हूं।

मैं किसी भी मदद की सराहना करता हूं।

धन्यवाद

उत्तर

7

संदेश स्पष्ट है कि उपयोगकर्ता मौजूद नहीं है।

MySQL में उपयोगकर्ता खाते में उपयोगकर्ता नाम और होस्ट परिभाषा घटक दोनों होते हैं।

या तो 'root'@'localhost' को definer बदलने के लिए या के लिए 'root'@'%'

+0

एक उपयोगकर्ता बना आप त्वरित उत्तर के लिए बहुत-बहुत धन्यवाद। मैं उपयोगकर्ता को बनाने, दूसरा विकल्प चुनना चाहता हूं। क्या आप कृपया संकेत दे सकते हैं कि उपयोगकर्ता को 'रूट' @ '%' के लिए बनाने के लिए मैं क्या कर सकता हूं? – Maria

+1

बढ़िया, आपने मुझे बहुत मदद की, मैंने आपके कारण इसे ठीक कर दिया। आपको बहुत धन्यवाद – Maria

+0

@ user3043360 मदद करने के लिए खुशी हुई। मुझे ध्यान रखना चाहिए था कि स्थानीयहोस्ट के अलावा कहीं से भी रूट पहुंच स्थापित करना सुरक्षा भेद्यता के रूप में जाना जाता है। असल में, ज्यादातर मामलों में, अनुप्रयोगों को 'root' का उपयोग नहीं करना चाहिए, लेकिन एप्लिकेशन-विशिष्ट उपयोगकर्ताओं को परिभाषित किया जाना चाहिए। –