MySQL डेटाबेस का नाम कैसे बदलें?


48

MySQL डेटाबेस का नाम कैसे बदलें?

MySQL ऑनलाइन मैनुअल ने RENAME DATABASE कमांड के बारे में कहा है (यह प्रलेखन पृष्ठ कुछ समय पहले Oracle द्वारा हटा दिया गया है):

यह कथन MySQL 5.1.7 में जोड़ा गया था लेकिन खतरनाक पाया गया था और MySQL 5.1.23 में हटा दिया गया था।

तो, कैसे आगे बढ़ें? औचित्य: हमने परियोजना के लिए एक कोड नाम के साथ शुरू किया था और अब परियोजना का निश्चित नाम प्रतिबिंबित करने के लिए डेटाबेस का नाम चाहते हैं।


चारों उत्तर समझ में आते हैं। यह कई संभावित समाधानों के साथ एक सवाल है।
नालपुरी


जवाबों:


59

से इस इलान Hazan से ब्लॉग पोस्ट:

MySQL में डेटाबेस का नाम बदलने का कोई समर्थन नहीं है। MySQL डेटाबेस का नाम बदलने के लिए आप निम्नलिखित में से एक कर सकते हैं:

  1. नया डेटाबेस बनाएँ और नए डेटाबेस में होने के लिए पुराने डेटाबेस में सभी तालिकाओं का नाम बदलें:

    CREATE database new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
    DROP database db_name;
    
  2. लिनक्स शेल में, पुराने डेटाबेस का बैकअप लेने के लिए mysqldump का उपयोग करें, फिर MySQL उपयोगिता का उपयोग करके एक नए नाम के तहत डंप किए गए डेटाबेस को पुनर्स्थापित करें। अंत में, पुराने डेटाबेस को छोड़ने के लिए ड्रॉप डेटाबेस कमांड का उपयोग करें। यह विकल्प बड़े डेटाबेस के लिए खराब प्रदर्शन कर सकता है।

    mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name"
    mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
    
  3. एक सरल लिनक्स स्क्रिप्ट (मेरा पसंदीदा समाधान) लिखें

    #!/bin/bash
    
    dbuser=xxxx
    dbpass=xxxx
    olddb=xxxx
    newdb=xxxx
    
    mysqlconn="mysql -u $dbuser -p$dbpass -h localhost"
    
    $mysqlconn -e "CREATE DATABASE $newdb"
    params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
    
    for name in $params; do
          $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
          echo "Renamed $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. यदि आपकी सभी तालिकाएँ MyISAM हैं, तो आप पुराने डेटाबेस फ़ोल्डर का नाम बदल सकते हैं:

    1. MySQL सर्वर को बंद करें,
    2. डेटाबेस फ़ोल्डर नाम को नए नाम में बदलें,
    3. MySQL सर्वर शुरू करें।

यहाँ MySQL के भीतर सीधे SQL में rename table कमांड उत्पन्न करने का एक वैकल्पिक तरीका है: blog.marceloaltmann.com/how-to-rename-a-database-in-mysql
Yves Martin

यह पहले समाधान के लिए एक क्वेरी बनाने में मदद करेगा। RENAME TABLE के पीछे बस कॉपी पेस्ट परिणाम SELECT CONCAT('olddb.', TABLE_NAME, ' TO newdb.', TABLE_NAME, ',') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='olddb';;
साइक्लोन

लेकिन यदि आप नए DB में डेटा नहीं
डालते हैं

tThanks। यह सबसे अच्छा जवाब है। आपको बहुत - बहुत धन्यवाद!
टाइपेलोजिक

वह स्क्रिप्ट सुपर नीट है, मारियाडीबी 10.1 पर बॉक्स से बाहर काम करती है।
लुक

12

MySQL थोड़े इसके लिए बेकार है। उपयोग करने के लिए एकमात्र ठोस विश्वसनीय समाधान है phpMyAdmin

Login-> click Scheme-> click Operations-> खोजें Rename database to:-> लिख NewName> click Go

इतना सरल है। सभी अनुमतियां ले ली गई हैं।


6
GUI समाधान के लिए +1, लेकिन समुदाय विकि उत्तर में सरल कमांड और स्क्रिप्ट भी पूरी तरह "ठोस और विश्वसनीय" हैं
विल शेपर्ड

7

मुझे एक बहुत ही सरल समाधान मिला: MySQL को शट डाउन करें, डेटाबेस निर्देशिका का नाम बदलें और पुनरारंभ करें। बस इतना ही!

यदि आपका SQL कोड या डेटा पुराने नाम से संदर्भित है तो यह थोड़ा खतरनाक है। फिर आपको एप्लिकेशन को पुनरारंभ करने से पहले उसे बदलना होगा। लेकिन मुझे ऐसा करने की आवश्यकता नहीं थी, लेकिन YMV।

Googling इन दोनों की तरह कुछ संकेत देता है:

https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

http://www.delphifaq.com/faq/databases/mysql/f574.shtml


5

मैं एक नया डेटाबेस बनाने के लिए जाता हूं, और फिर पुराने को एक .sql फ़ाइल (mysqldump के साथ) में से बाहर निकालता हूं, फ़ाइल को संपादित करता हूं, कुछ प्रकार का करता हूं s/old_database/new_database/gऔर फिर इसे नए db में पुन: आयात करता हूं ।
शायद यह करने का सबसे अच्छा तरीका नहीं है, लेकिन यह काम करता है।


2

यदि आपके पास MySQL Management-Tool (जैसे phpMyAdmin) का उपयोग करने का मौका है, तो आप इसे आसानी से नाम बदल सकते हैं क्योंकि वे आपके लिए क्वेरी बनाते हैं।

PhpMyAdmin में वे प्रत्येक तालिका भी बनाते हैं और "INSERT INTO ... Select * FROM ..." द्वारा डेटा सम्मिलित करते हैं। इसलिए चैंजिंग करके वे डेटा को कॉपी करते हैं।

यदि आप ऐसा नहीं कर सकते हैं तो मैं एक डंप बनाने और एक नए डेटाबेस में एसक्यूएल-फाइल को फिर से आयात करने की सिफारिश करूंगा।

सौभाग्य!

सादर, बेन।


2

मैंने डेटाबेस का नाम बदलने के लिए निम्नलिखित विधि का उपयोग किया

  1. mysqldump या किसी DB टूल जैसे heidiSQL, mysql एडमिनिस्ट्रेटर आदि का उपयोग करके फाइल का बैकअप लें

  2. कुछ पाठ संपादक में बैक अप (जैसे backupfile.sql) फ़ाइल खोलें।

  3. डेटाबेस नाम खोजें और फ़ाइल को सहेजें।

  4. संपादित sql फ़ाइल को पुनर्स्थापित करें

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