2015-01-13 7 views
17

दूषित है, मुझे पता है कि यह डुप्लिकेट जैसा दिखता है, लेकिन जो समाधान मैंने पाया वह मेरे लिए काम नहीं करता है। मैंने MySQL 5.1 को अनइंस्टॉल किया और 5.6 स्थापित किया और मैं प्रीवीउस निर्यात एसक्यूएल फ़ाइल को वापस आयात करना चाहता हूं। लेकिन कुछ फ़ंक्शन है जो इस त्रुटि को उस निर्यात फ़ाइल में बनाता है। मैंने पाया और चलाया आदेश:
../bin mysql mysql_upgrade -uroot -p --force लेकिन अगर मैं समझता हूं, यह केवल अपग्रेड करते समय ही काम करता है, इंस्टॉल के साथ नहीं। क्या मेरे लिए कुछ समाधान है?mysql.proc से लोड नहीं हो सकता है। तालिका शायद

धन्यवाद!

संपादित करें: मैंने आयात फ़ाइल से फ़ंक्शन परिभाषा को हटा दिया और आयात किया गया। लेकिन अगर मैं मैन्युअल रूप से उस फ़ंक्शन को फिर से परिभाषित करना चाहता हूं तो यह मुझे एक ही त्रुटि दिखाता है "mysql.proc से लोड नहीं हो सकता"। समारोह यहां है:

DELIMITER $$ 

CREATE FUNCTION `randStr250`(length int) RETURNS varchar(250) CHARSET utf8 
begin 
    declare s varchar(250); 
    declare i tinyint; 
    set s=""; 
    if (length<1 or length>6) then 
     set s="Parameter should be in range 1-6. Your value was out of this range."; 
    else 
    set i=0; 
    while i<length do 
     set s=concat(s,sha1(now())); 
     set i=i+1; 
    end while; 
    end if; 
    return s; 
end $$ 

DELIMITER ; 
+1

ठीक है मुझे यह मिला: ** mysql \ bin mysql_upgrade.exe -u root -pxxx --force ** और यह काम करता है। –

उत्तर

29

MariaDB-5.5.41 को mysql-5.5.29 से एक डाटाबेस डंप restorting के बाद एक ऐसी ही मुद्दा था। mysql_upgrade मुद्दा

$ mysql_upgrade -u root -pxxx 

तय mysql manual के अनुसार,

आप mysql_upgrade हर बार जब आप MySQL उन्नयन पर अमल करना चाहिए।

+2

मैंप का उपयोग करने वालों के लिए बस एक टिप्पणी, वही बात लागू होती है लेकिन mysql_upgrade आपके पथ में नहीं होगा इसलिए: '/ एप्लीकेशन/एमएएमपी/लाइब्रेरी/बिन/mysql_upgrade -u root -p root' – Chris

+0

और मैक ओएस उपयोगकर्ताओं के लिए: '/ usr/local/mysql/bin/mysql_upgrade -u root -proot' –

1

अधिकांश लोग जिनके पास यह समस्या है, वे MySQL को अपग्रेड करने की सिफारिश कर रहे हैं। यदि आप कॉन्फ़िगरेशन में हैं, तो मेरे जैसे, जिसमें यह होता है जब आप मास्टर नोड से दोहराने के लिए स्लेव नोड सेट करने का प्रयास करते हैं, तो आप वास्तव में संस्करणों के साथ गड़बड़ नहीं करना चाहते हैं।

मेरा मतलब है, मेरे मामले में मेरे पास एक विंडोज मास्टर नोड था और एक लिनक्स स्लेव नोड स्थापित कर रहा था (इसलिए, पहले mysqldump नृत्य कर रहा था)। चूंकि माइक्रोसॉफ्ट को अपग्रेड करना लिनक्स में थोड़ा और मुश्किल है (या इसके बजाय, यह वास्तव में बेहतर नहीं है, लिनक्स पैकेज की स्थिरता का आनंद लेने के लिए, उदाहरण के लिए, अपने एलटीएस वितरण से आते हैं), यह सुनिश्चित करना शायद एक अच्छा विचार है कि आपके विंडोज ओएस में आपके MySQL संस्करण में आपके लिनक्स ओएस में आपके MySQL संस्करण के समान संस्करण चल रहा है।

एक बार जब मैंने यह सुनिश्चित किया कि दोनों संस्करण समान थे, तो mysqldump और बहाल काम किया, और मैं भयानक त्रुटि Cannot load from mysql.proc. The table is probably corrupted. प्राप्त किए बिना ठीक से एक स्लेव नोड स्थापित कर सकता था।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे