MySQL में SQL डंप आयात करने में त्रुटि: अज्ञात डेटाबेस / डेटाबेस नहीं बना सकता


84

मैं उलझन में हूँ कि कैसे एक SQL डंप फ़ाइल आयात करें। मैं MySQL में पहले डेटाबेस बनाने के बिना डेटाबेस आयात नहीं कर सकता।

यह तब प्रदर्शित की गई त्रुटि है जब database_nameअभी तक नहीं बनाया गया है:

username= मूल सर्वर पर डेटाबेस तक पहुँच के साथ किसी का उपयोगकर्ता नाम।
database_nameमूल सर्वर से डेटाबेस का नाम

$ mysql -u username -p -h localhost database_name < dumpfile.sql   
Enter password:  
ERROR 1049 (42000): Unknown database 'database_name' 

अगर मैं रूट के रूप में MySQL में लॉग इन करता हूं और डेटाबेस बनाता हूं, database_name

mysql -u root  
create database database_name;  
create user username;# same username as the user from the database I got the dump from.  
grant all privileges on database_name.* to username@"localhost" identified by 'password';  
exit mysql

फिर sql डंप को फिर से आयात करने का प्रयास:

$ mysql -u username -p database_name < dumpfile.sql  
Enter password:  
ERROR 1007 (HY000) at line 21: Can't create database 'database_name'; database exists

मैं SQL डंपफाइल को कैसे आयात करूं?

जवाबों:


39

Sql फ़ाइल खोलें और उस लाइन पर टिप्पणी करें जो मौजूदा डेटाबेस बनाने की कोशिश करती है।


8
@BryanWheelock मुझे लगता है कि आपके आदेश में डेटाबेस का चयन करने के लिए एक बेहतर (औद्योगिक) विकल्प नहीं होगा, इसलिए यह बन जाता है: "mysql -u यूजरनेम -p लोकलहोस्ट <डंपफाइल.एसक्यूएल"। Database_name एक वैकल्पिक पैरामीटर है। यदि आपकी डंप फ़ाइल में "क्रिएट डेटाबेस" निर्देश है, तो इसे बनाया जाएगा।
टोनि 7

बस इसे थोड़ा विस्तार से बताने के लिए, मेरी * .sql फ़ाइल में पहली पहली पंक्ति इस पर थी: क्रिएट डटएब्यू इफ़ नॉट एग्ज़ाम्स `डेटाबेस_नाम` / *! 40100 डिफाल्टर चार्जर सैक्टर लैटिन 1 * /; इसे बदलने के लिए (नोट / * शुरू में): / * सृजित किया जा सकता है अगर नहीं छूटता है 'database__` *! 40100 DEFAULT CHARACTER SET latin1 * /; प्रभावी रूप से कमांड के बारे में टिप्पणी और आयात को काम करना चाहिए। बस डेटाबेस के भीतर सक्रिय होना याद रखें कि आप तालिकाओं को सम्मिलित करना चाहते हैं, अन्यथा आप गड़बड़ हो सकते हैं!
ntk4

49

यह MySQL का एक ज्ञात बग है।

बग 42996
बग 40477

जैसा कि आप देख सकते हैं यह 2008 से एक ज्ञात मुद्दा रहा है और उन्होंने इसे अभी तक तय नहीं किया है !!!

काम
करने के लिए आपको पहले आयात करने के लिए डेटाबेस बनाना होगा। यह किसी भी मेज की जरूरत नहीं है। फिर आप अपने डेटाबेस को आयात कर सकते हैं।

  1. सबसे पहले अपनी MySQL कमांड लाइन शुरू करें (यदि आवश्यक हो तो उपयोगकर्ता नाम और पासवर्ड लागू करें)
    C:\>mysql -u user -p

  2. अपना डेटाबेस बनाएं और बाहर निकलें

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. अपने चयनित डेटाबेस को डंप फ़ाइल से आयात करें
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

आप किसी भी MySQL सर्वर के लिए एक आईपी या डोमेन के साथ लोकलहोस्ट को बदल सकते हैं जिसे आप आयात करना चाहते हैं। Mysql प्रॉम्प्ट में DROP कमांड का कारण यह सुनिश्चित करना है कि हम एक खाली और साफ डेटाबेस से शुरू करें।


2
मैं जवाब की सराहना करता हूं। अब यह 2012 है और ऐसा लगता है कि बग अभी भी वहाँ है, के लिए मैं अपने वर्डप्रेस databae तथापि टिप्पणी एक नए सर्वर पर (बहाल प्राप्त करने के लिए अपने जवाब के लिए इस्तेमाल किया, अपने MySQL commends समाप्त होने याद कर रहे हैं ';' ;-)।
कार्ल

12

ऐसा लगता है कि आपके डेटाबेस डंप में डेटाबेस बनाने के लिए जानकारी शामिल है। इसलिए MySQL कमांड लाइन को डेटाबेस का नाम न दें। यह नया डेटाबेस बनाएगा और आयात करने के लिए उस पर स्विच करेगा।


4

यदि आप डायरेक्ट डेटाबेस या cpanel में अपना डेटाबेस बनाते हैं, तो आपको नोटपैड या नोटपैड ++ के साथ अपने एसक्यूएल को संपादित करना होगा और लाइन 22 में CREATE DATABASEकमांड को बदलना CREATE DATABASE IF NOT EXISTSहोगा।


0

मैं कमांड लाइन का उपयोग करके स्वयं डेटाबेस बनाता हूं। फिर फिर से आयात करने का प्रयास करें, यह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.