यह प्रश्न थोड़ा पुराना है, लेकिन मैंने ठीक उसी मुद्दे को हल करने की कोशिश में कुछ घंटे बर्बाद कर दिए हैं, इसलिए मुझे लगता है कि भविष्य में किसी के लिए एक स्पष्ट स्पष्टीकरण काम आ सकता है...
पीछा करने के लिए कटौती करने के लिए:समस्या आपके MySQL डंप में DEFINER फ़ील्ड में है। यह कुछ ऐसा दिखता है:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
समस्या यह है कि यह *[email protected] है। * हमेशा उस उपयोगकर्ता खाते में हार्डकोड किया जाएगा जिसका उपयोग मूल डीबी में दृश्य बनाने के लिए किया गया था और नहीं उपयोगकर्ता जिसे आपने डेटाबेस को निर्यात या आयात करने के लिए उपयोग किया है जैसा कि कोई उम्मीद करेगा (या कम से कम मैंने किया)। और बाद में, आयात के दौरान, इस उपयोगकर्ता का उपयोग दृश्य को फिर से बनाने के लिए किया जाएगा।
तो आप रूट के रूप में निर्यात/आयात कर सकते हैं, लेकिन यदि मूल डीबी किसी अन्य उपयोगकर्ता के अधीन चल रहा है और उसके पास नए डेटाबेस में कोई दृश्य बनाने का अधिकार नहीं है, तो आयात विफल हो जाएगा।
आपके पास दो आसान उपाय हैं:
- सभी संदर्भ खोजें और बदलें
some_user
@localhost
अपने नए उपयोगकर्ता के साथ अपनी डंप फ़ाइल में (जिसे आप डंप आयात करने के लिए उपयोग करते हैं, उदाहरण के लिए example@ sqldat.com ) - या आप नए डेटाबेस पर *some_user* उचित अधिकार प्रदान कर सकते हैं ताकि उसके खाते के तहत विचार बनाए जा सकें
किसी भी तरह से समस्या ठीक हो जाएगी, लेकिन मुझे लगता है कि पहला तरीका बेहतर और साफ-सुथरा है, क्योंकि आपको भविष्य में कई उपयोगकर्ताओं के बारे में चिंता करने की ज़रूरत नहीं है।