2012-06-04 9 views
6

को पुनर्स्थापित करते समय त्रुटि निम्न त्रुटि तब होती है जब मैं पुटी के माध्यम से MYSQL में डीबी को पुनर्स्थापित करने का प्रयास कर रहा हूं।MYSQL डीबी

कमान: mysql -u root -p db1<dbname.sql ;

त्रुटि 1 (HY000) लाइन 7904 पर: बनाया नहीं जा सकता/ दायर करने के लिए './ dbname /db.opt' लिखने (Errcode: 2)

कारण क्या है?

उत्तर

9

इस बार मतलब है कि आपके डंप फ़ाइल एक कमांड कि डेटाबेस के आधार पर चलाना चाहिए कि या तो अपने स्थानीय संदर्भ में मौजूद नहीं है भी शामिल है, या जिसके लिए वर्तमान उपयोगकर्ता तक पहुंच नहीं है। डंपफाइल खोलें और पता चलने के लिए त्रुटि में उल्लिखित रेखा को देखें।

1

पता लगाएँ कि Errcode: 2 मतलब है

आप को खोजने के लिए perror उपयोगिता का उपयोग कर सकते हैं तो त्रुटि 2 का मतलब है:

$ perror 2 
OS error code 2: No such file or directory 

अधिक जानकारी लिंक @Jocelyn अपनी टिप्पणियों में उल्लेख किया है पर है: http://dev.mysql.com/doc/refman/5.5/en/cannot-create.html

पता लगाएं कि ./ अंक

अब हम जानते हैं कि एक फ़ाइल मौजूद नहीं है (या शायद इसे लिखा नहीं जा सकता है।) त्रुटि संदेश हमें एक सापेक्ष पथ ./ देता है जो इसे मुश्किल बनाता है ... अगर यह आउटपुट हो तो यह सहायक नहीं होगा एक पूर्ण योग्यता पथ? हाँ।

तो जब MySQL एक SQL फ़ाइल आयात करता है तो यह फाइल सिस्टम पर कुछ अस्थायी फ़ाइलें बनाता है। पथ आमतौर पर MySQL my.cnf फ़ाइल में "tmpfile" कॉन्फ़िगरेशन विकल्प द्वारा निर्दिष्ट किया जाता है। आप जल्दी से एक SQL क्वेरी को क्रियान्वित करते हुए मूल्य पा सकते हैं:

$ mysql -h127.0.0.1 -uroot -p 
# I assume you're now logged into MySQL 
mysql> SHOW VARIABLES LIKE '%tmpdir%'; 

+-------------------+-------+ 
| Variable_name  | Value | 
+-------------------+-------+ 
| slave_load_tmpdir | /tmp | 
| tmpdir   | /tmp | 
+-------------------+-------+ 
2 rows in set (0.00 sec) 

सुनिश्चित निर्देशिका mysql उपयोगकर्ता

द्वारा लिखने योग्य है tmpdir इसका मतलब यह है MySQL /tmp/dbnamehere/db.opt बनाने के लिए कोशिश कर रहा था अनुसार। सुनिश्चित करें कि यह निर्देशिका मौजूद है और यह mysql:mysql के स्वामित्व में है। कुछ निर्देशिका बनाने के लिए पर्याप्त विशेषाधिकारों को बढ़ाने के लिए आपको sudo का उपयोग करना पड़ सकता है।

$ chown -R mysql:mysql /tmp/dbnamehere 

अभी भी काम नहीं कर रहा है? अन्य डिफ़ॉल्ट tmpdir रास्तों

मैं अपने सिस्टम पर मुद्दों को हिट का प्रयास करें (Ubuntu 12.04 + Vagrant 1.7.2 + बावर्ची 11.something + opscode mysql cookbook 6.0.6) जहां tmpdir में मूल्य विचार किया जा रहा नहीं कर रहा था या जहां से खींचा नहीं किया जा रहा था मैंने उम्मीद की।

  • /var/lib/mysql/dbnamehere
  • /var/lib/mysql-डिफ़ॉल्ट/dbnamehere
:

MySQL वास्तव में निम्न स्थानों में से एक में अस्थायी फ़ाइल बनाने के लिए कोशिश कर रहा था

मुझे उन निर्देशिकाओं को बनाना था और mysql पर स्वामित्व बदलना था: mysql।

4

मैं इस त्रुटि में काम पर चला गया जब स्रोत डेटाबेस नाम लक्ष्य डेटाबेस नाम से अलग था। मैंने mysqldump db1 > dumpfile के साथ एक सर्वर पर डेटाबेस डाला और इसे mysql db2 < dumpfile के साथ एक अलग सर्वर पर आयात करने का प्रयास किया।

डंपफाइल को ALTER TABLE db1 ... कथनों को बदलता है जो लक्ष्य सर्वर पर अर्थहीन थे जहां मैंने डेटाबेस डीबी 2 नाम दिया था।

शायद इससे कहीं अधिक सुरुचिपूर्ण समाधान है, लेकिन मैंने अभी लक्ष्य सर्वर पर डंपफाइल संपादित किया है और डीबी 1 को डीबी 2 के साथ बदल दिया है।

+0

आपके उत्तर की संक्षिप्तता के लिए, संपादक में स्ट्रिंग के बजाय आपके लिए कई विकल्प हैं: http://dba.stackexchange.com/a/8892 – Pogrindis

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