5.1.32

2009-10-26 2 views
12

पर TRIGGER विशेषाधिकार के साथ MySQL ट्रिगर नहीं बना सकता है मेरे साथी डेवलपर्स और मेरे पास एक साझा MySQL विकास डेटाबेस पर हमारे स्वयं के विकास स्कीमा हैं। मेरे असाइनमेंट के लिए मुझे अपनी स्कीमा में ट्रिगर्स बनाने की आवश्यकता है, फिर भी मैं अब तक असफल रहा हूं।5.1.32

CREATE TRIGGER myTrigger AFTER DELETE on myTable 
FOR EACH ROW BEGIN 
    -- DO STUFF 
END; 

MySQL का कहना है: त्रुटि 1419 (HY000): आप सुपर विशेषाधिकार और बाइनरी लॉगिंग सक्षम है की जरूरत नहीं है

मैं जाँच (आप सकता चर कम सुरक्षित log_bin_trust_function_creators उपयोग करना चाहते हैं) MySQL मैनुअल (http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html):

TRIGGER विशेषाधिकार आप बना सकते हैं और ड्रॉप चलाता सक्षम बनाता है। उस तालिका के लिए ट्रिगर बनाने या ड्रॉप करने के लिए आपके पास तालिका के लिए यह विशेषाधिकार होना चाहिए। यह विशेषाधिकार MySQL 5.1.6 में जोड़ा गया था। (पहले MySQL 5.1.6 करने के लिए, ट्रिगर संचालन सुपर विशेषाधिकार की आवश्यकता है।)

हम चल रहे हैं "5.1.32-उद्यम-जीपीएल-उन्नत लॉग ऑन", इसलिए TRIGGER विशेषाधिकार पर्याप्त होना चाहिए; हालांकि, डीबीए ने मुझे mySchema पर ट्राइगर विशेषाधिकार दिया। * और जब मैं दिखाता हूं तो मैं इसे देख सकता हूं, फिर भी मुझे "सुपर" विशेषाधिकार की आवश्यकता के बारे में यह त्रुटि मिलती है। हम सभी डेवलपर्स को सुपर नहीं देना चाहते हैं।

कोई सुझाव?

उत्तर

13

यहां bug report for this है। एक विकल्प --log-bin-trust-function-creators विकल्प के साथ चलाना है, जो आपको सुपर विशेषाधिकार के बिना ट्रिगर्स बनाने की अनुमति देगा। This page बताता है कि इसका मतलब क्या है। असल में यह करना है कि MySQL सोचता है कि आपके ट्रिगर्स निर्धारक हैं (यानी प्रतिकृति के लिए सुरक्षित)। आपका डीबीए उस मोड में आरामदायक हो सकता है या नहीं भी हो सकता है। यह आदर्श है, लेकिन सुपर देने की तुलना में बेहतर नहीं है ...

अद्यतन: दूसरी कड़ी पर डॉक्स वास्तव में यह ध्वनि की तरह आप पंक्ति आधारित प्रतिकृति, या यहाँ तक मिश्रित मोड का उपयोग करके यह चारों ओर पाने के लिए सक्षम हो सकता है बनाने के प्रतिकृति। कम से कम यह प्रतिकृति के लिए इसे सुरक्षित बना देगा। चाहे आपको अभी भी सुपर होना चाहिए या नहीं, मुझे नहीं पता, लेकिन यह एक कोशिश के लायक हो सकता है।

+1

लिंक के लिए धन्यवाद। डीबीए सुपर देने के बजाए देव सर्वर पर लॉग-बिन-ट्रस्ट-फ़ंक्शन-निर्माता विकल्प का उपयोग करके चलने जा रहा है। –

+0

MySQL बग # 52127 कहता है कि यदि आप बाइनरी लॉगिंग सक्षम करते हैं तो आप सुपर प्राइजेज प्रदान किए बिना ट्रिगर जोड़ने की अनुमति नहीं दे सकते। –

+0

यह उल्लेखनीय है कि यह त्रुटि वास्तव में बहुत उपयोगी होती है यदि आप प्रतिकृति का उपयोग कर रहे हैं, क्योंकि यह आपको अनजाने में एक ट्रिगर बनाने से रोक सकता है जो एक प्रतिकृति सेटअप में काम नहीं करेगा। इसका एक उदाहरण होगा जहां आप ट्रिगर के हिस्से के रूप में RAND() जैसे कुछ का उपयोग कर रहे हैं। – coatesap