it-swarm.asia

كيف يمكنني بسرعة إعادة تسمية قاعدة بيانات MySQL (تغيير اسم المخطط)؟

دليل MySQL في MySQL يغطي هذا.

عادةً ما أتخلص من قاعدة البيانات وأعد استيرادها باسم جديد. هذا ليس خيارًا لقواعد البيانات الكبيرة جدًا. من الواضح أن RENAME {DATABASE | SCHEMA} db_name TO new_db_name;يفعل أشياء سيئة ، ولا يوجد إلا في عدد قليل من الإصدارات ، وهي فكرة سيئة بشكل عام .

يحتاج هذا للعمل مع InnoDB ، الذي يخزن الأشياء بشكل مختلف تمامًا عن MyISAM .

866
deadprogrammer

بالنسبة لـ InnoDB ، يبدو أن ما يلي يعمل: قم بإنشاء قاعدة بيانات فارغة جديدة ، ثم أعد تسمية كل جدول بدوره إلى قاعدة البيانات الجديدة:

RENAME TABLE old_db.table TO new_db.table;

سوف تحتاج إلى ضبط الأذونات بعد ذلك.

من أجل البرمجة النصية في Shell ، يمكنك استخدام أي مما يلي:

mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

أو

for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

ملاحظات:

  • لا توجد مسافة بين الخيار -p وكلمة المرور. إذا كانت قاعدة بياناتك لا تحتوي على كلمة مرور ، فقم بإزالة الجزء -u username -ppassword.
  • إذا كان بعض الجدول يحتوي على مشغل ، فلا يمكن نقله إلى قاعدة بيانات أخرى باستخدام الطريقة أعلاه (سينتج عن الخطأ Trigger in wrong schema). إذا كان الأمر كذلك ، فاستخدم طريقة تقليدية لاستنساخ قاعدة بيانات ثم إسقاط القاعدة القديمة:

    mysqldump old_db | mysql new_db

  • إذا قمت بتخزين الإجراءات ، يمكنك نسخها بعد ذلك:

    mysqldump -R old_db | mysql new_db

756
Thorsten

استخدم هذه الأوامر البسيطة القليلة:

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

أو لتقليل I/O استخدم ما يلي كما اقترح @ Pablo Marin-Garcia:

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase
416
hendrasaputra

أعتقد أن الحل أبسط وقد اقترحه بعض المطورين. phpMyAdmin لديه عملية لهذا الغرض.

من phpMyAdmin ، حدد قاعدة البيانات التي تريد تحديدها. في علامات التبويب هناك علامة واحدة تسمى العمليات ، انتقل إلى قسم إعادة التسمية. هذا كل شئ.

يقوم ، كما اقترح الكثيرون ، بإنشاء قاعدة بيانات جديدة بالاسم الجديد ، وإفراغ جميع جداول قاعدة البيانات القديمة في قاعدة البيانات الجديدة وإسقاط قاعدة البيانات القديمة.

Enter image description here

195
raphie

يمكنك استخدام SQL لإنشاء برنامج نصي SQL لنقل كل جدول في قاعدة البيانات المصدر إلى قاعدة البيانات الوجهة.

يجب عليك إنشاء قاعدة البيانات الوجهة قبل تشغيل البرنامج النصي الذي تم إنشاؤه من الأمر.

يمكنك استخدام أيٍّ من هذين النصين (اقترح أصلاً أن يقوم الشخص السابق "بتحسين" إجابتي لاستخدام GROUP_CONCAT. اختر ما تريد ، لكنني أفضل الأصل):

SELECT CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name, '; ')
FROM information_schema.TABLES 
WHERE table_schema='$1';

أو

SELECT GROUP_CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name SEPARATOR '; ')
FROM information_schema.TABLES 
WHERE table_schema='$1';

($ 1 و 2 $ هما المصدر والهدف على التوالي)

سيؤدي ذلك إلى إنشاء أمر SQL يجب تشغيله بعد ذلك.

لاحظ أن GROUP_CONCAT يحتوي على حد طول افتراضي قد يتم تجاوزه لقواعد البيانات مع عدد كبير من الجداول. يمكنك تغيير هذا الحد عن طريق تشغيل SET SESSION group_concat_max_len = 100000000; (أو بعض الأرقام الكبيرة الأخرى).

97
ErichBSchulz

محاكاة أمر RENAME DATABASE المفقود في MySQL:

  1. إنشاء قاعدة بيانات جديدة
  2. قم بإنشاء استعلامات إعادة تسمية باستخدام:

    SELECT CONCAT('RENAME TABLE ',table_schema,'.',table_name,
        ' TO ','new_schema.',table_name,';')
    FROM information_schema.TABLES
    WHERE table_schema LIKE 'old_schema';
    
  3. تشغيل هذا الإخراج

  4. حذف قاعدة البيانات القديمة

تم التقاطه منمحاكاة أمر مفقود لإعادة تسمية قاعدة البيانات في MySQL.

33
Marciano

ثلاثة خيارات:

  1. قم بإنشاء قاعدة البيانات الجديدة ، وإسقاط الخادم ، ونقل الملفات من مجلد قاعدة بيانات واحدة إلى أخرى ، وإعادة تشغيل الخادم. لاحظ أن هذا لن يعمل إلا إذا كانت جميع جداولك هي MyISAM.

  2. إنشاء قاعدة بيانات جديدة ، استخدم عبارات CREATE TABLE ... LIKE ، ثم استخدم عبارات INSERT ... SELECT * FROM.

  3. استخدام mysqldump وإعادة تحميل مع هذا الملف.

24
longneck

طريقة بسيطة

التغيير إلى دليل قاعدة البيانات:

cd /var/lib/mysql/

أغلق MySQL ... هذا مهم!

/etc/init.d/mysql stop

حسنًا ، هذه الطريقة لا تعمل مع قواعد بيانات InnoDB أو BDB.

إعادة تسمية قاعدة البيانات:

mv old-name new-name

... أو الجدول ...

cd database/

mv old-name.frm new-name.frm

mv old-name.MYD new-name.MYD

mv old-name.MYI new-name.MYI

أعد تشغيل الخلية

/etc/init.d/mysql start

فعله...

حسنًا ، هذه الطريقة لا تعمل مع قواعد بيانات InnoDB أو BDB. في هذه الحالة ، يتعين عليك تفريغ قاعدة البيانات وإعادة استيرادها.

23
DeeCee

لقد واجهت مؤخرًا طريقة لطيفة جدًا للقيام بذلك ، وهي تعمل مع MyISAM و InnoDB وهي سريعة جدًا:

RENAME TABLE old_db.table TO new_db.table;

لا أتذكر أين قرأته ، لكن الفضل يعود لشخص آخر وليس لي.

19
Amr Mostafa

يمكنك استخدام هذا البرنامج النصي Shell:

المرجع: كيفية إعادة تسمية قاعدة بيانات MySQL؟

#!/bin/bash
set -e # terminate execution on command failure

mysqlconn="mysql -u root -proot"
olddb=$1
newdb=$2
$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";
done;
$mysqlconn -e "DROP DATABASE $olddb"

انها تعمل:

$ sh rename_database.sh oldname newname
18
Grijesh Chauhan

هذا هو ما أستخدمه:

$ mysqldump -u root -p olddb >~/olddb.sql
$ mysql -u root -p
mysql> create database newdb;
mysql> use newdb
mysql> source ~/olddb.sql
mysql> drop database olddb;
16
eaykin

أبسط طريقة لإثبات الرمز النقطي والخداع لإجراء إكمال إعادة تسمية (بما في ذلك إسقاط قاعدة البيانات القديمة في النهاية بحيث تكون إعادة تسمية بدلاً من نسخة) :

mysqladmin -uroot -pmypassword create newdbname
mysqldump -uroot -pmypassword --routines olddbname | mysql -uroot -pmypassword newdbname
mysqladmin -uroot -pmypassword drop olddbname

الخطوات:

  1. انسخ السطور إلى المفكرة.
  2. استبدل جميع الإشارات إلى "olddbname" أو "newdbname" أو "mypassword" (+ اختياريًا "root") بمكافئاتك.
  3. تنفيذ واحد تلو الآخر في سطر الأوامر (إدخال "ص" عند المطالبة).
15
Steve Chambers

لا يدعم MySQL إعادة تسمية قاعدة البيانات من خلال واجهة الأمر الخاصة به في الوقت الحالي ، ولكن يمكنك إعادة تسمية قاعدة البيانات إذا كان لديك حق الوصول إلى الدليل الذي يخزن MySQL قواعد البيانات الخاصة به. بالنسبة لعمليات تثبيت MySQL الافتراضية ، يكون ذلك عادةً في دليل البيانات أسفل الدليل الذي تم تثبيت MySQL عليه. حدد موقع اسم قاعدة البيانات التي تريد إعادة تسميتها ضمن دليل البيانات وأعد تسميتها. قد تؤدي إعادة تسمية الدليل إلى حدوث بعض مشكلات الأذونات. كن حذرا.

ملاحظة: يجب إيقاف MySQL قبل أن تتمكن من إعادة تسمية قاعدة البيانات

أوصي بإنشاء قاعدة بيانات جديدة (باستخدام الاسم الذي تريده) وتصدير/استيراد البيانات التي تحتاجها من القديم إلى الجديد. بسيط جدا.

14
bryanpearson

عندما تقوم بإعادة تسمية قاعدة بيانات في PHPMyAdmin ، فإنها تنشئ ملف تفريغ ، ثم تقوم بإسقاط قاعدة البيانات وإعادة إنشائها بالاسم الجديد.

13
UnkwnTech

حسنا هناك طريقتان:

الطريقة 1: إحدى الطرق المعروفة لإعادة تسمية مخطط قاعدة البيانات هي تفريغ المخطط باستخدام Mysqldump واستعادته في مخطط آخر ، ثم إسقاط المخطط القديم (إذا لزم الأمر).

من شل

 mysqldump emp > emp.out
 mysql -e "CREATE DATABASE employees;"
 mysql employees < emp.out 
 mysql -e "DROP DATABASE emp;"

على الرغم من أن الطريقة المذكورة أعلاه سهلة ، إلا أنها تستهلك الوقت والمساحة. ماذا لو كان المخطط أكثر من 100GB؟ هناك طرق يمكنك من خلالها توصيل الأوامر المذكورة أعلاه معًا لتوفير المساحة ، ولكنها لن توفر الوقت.

لعلاج هذه الحالات ، هناك طريقة سريعة أخرى لإعادة تسمية المخططات ، ومع ذلك ، يجب توخي الحذر أثناء القيام بذلك.

الطريقة 2: يحتوي MySQL على ميزة جيدة جدًا لإعادة تسمية الجداول التي تعمل حتى عبر مخططات مختلفة. عملية إعادة التسمية هذه ذرية ولا يمكن لأي شخص آخر الوصول إلى الجدول أثناء إعادة تسميته. يستغرق هذا وقتًا قصيرًا لإكماله لأن تغيير اسم الجدول أو مخططه ليس سوى تغيير بيانات التعريف. هنا هو النهج الإجرائي في القيام بإعادة تسمية:

إنشاء مخطط قاعدة البيانات الجديدة بالاسم المطلوب. إعادة تسمية الجداول من المخطط القديم إلى المخطط الجديد ، باستخدام أمر "إعادة تسمية الجدول" في MySQL. إسقاط مخطط قاعدة البيانات القديمة. If there are views, triggers, functions, stored procedures in the schema, those will need to be recreated too. يفشل "إعادة تسمية الجدول" في MySQL في حالة وجود مشغلات على الجداول. لعلاج هذا ، يمكننا القيام بالأمور التالية:

1) Dump the triggers, events and stored routines in a separate file. يتم ذلك باستخدام إشارات -E ، -R (بالإضافة إلى -t -d التي تفريغ المشغلات) إلى الأمر mysqldump. بمجرد تفريغ المشغلات ، سنحتاج إلى إسقاطها من المخطط ، حتى يعمل الأمر RENAME TABLE.

 $ mysqldump <old_schema_name> -d -t -R -E > stored_routines_triggers_events.out

2) قم بإنشاء قائمة بجداول "BASE" فقط. يمكن العثور على هذه باستخدام استعلام في جدول information_schema.TABLES.

 mysql> select TABLE_NAME from information_schema.tables where 
    table_schema='<old_schema_name>' and TABLE_TYPE='BASE TABLE';

3) تفريغ طرق العرض في ملف مهلة. يمكن العثور على طرق العرض باستخدام استعلام على نفس الجدول information_schema.TABLES.

mysql> select TABLE_NAME from information_schema.tables where 
   table_schema='<old_schema_name>' and TABLE_TYPE='VIEW';
 $ mysqldump <database> <view1> <view2> … > views.out

4) إسقاط المشغلات على الجداول الحالية في old_schema.

mysql> DROP TRIGGER <trigger_name>;
...

5) استعادة ملفات التفريغ أعلاه بمجرد إعادة تسمية جميع الجداول "الأساسية" الموجودة في الخطوة رقم 2.

mysql> RENAME TABLE <old_schema>.table_name TO <new_schema>.table_name;
...
$ mysql <new_schema> < views.out
$ mysql <new_schema> < stored_routines_triggers_events.out

التعقيدات مع الطرق المذكورة أعلاه: قد نحتاج إلى تحديث المنح للمستخدمين بحيث يتطابقون مع المخطط الصحيح. يمكن إصلاح هذه باستخدام UPDATE بسيط على mysql.columns_priv و mysql.procs_priv و mysql.tables_priv وجداول mysql.db لتحديث اسم old_schema إلى new_schema والاتصال بـ "Flush امتيازات". على الرغم من أن "الطريقة 2" تبدو أكثر تعقيدًا قليلاً من "الطريقة 1" ، إلا أنها قابلة للبرمجة تمامًا. يمكن أن يساعدك البرنامج النصي البسيط للباش لتنفيذ الخطوات المذكورة أعلاه بالتسلسل المناسب في توفير الوقت والوقت أثناء إعادة تسمية مخططات قاعدة البيانات في المرة القادمة.

قام فريق Percona Remote DBA بكتابة نص يسمى "rename_db" يعمل بالطريقة التالية:

[[email protected]~]# /tmp/rename_db
rename_db <server> <database> <new_database>

للتدليل على استخدام هذا البرنامج النصي ، استخدم نموذج مخطط "emp" ، وقام بإنشاء مشغلات اختبار ، وإجراءات مخزنة على هذا المخطط. سيحاول إعادة تسمية مخطط قاعدة البيانات باستخدام البرنامج النصي ، والذي يستغرق إكماله بضع ثوانٍ بدلاً من طريقة التفريغ/الاستعادة التي تستغرق وقتًا طويلاً.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| emp                |
| mysql              |
| performance_schema |
| test               |
+--------------------+


[[email protected] ~]# time /tmp/rename_db localhost emp emp_test
create database emp_test DEFAULT CHARACTER SET latin1
drop trigger salary_trigger
rename table emp.__emp_new to emp_test.__emp_new
rename table emp._emp_new to emp_test._emp_new
rename table emp.departments to emp_test.departments
rename table emp.dept to emp_test.dept
rename table emp.dept_emp to emp_test.dept_emp
rename table emp.dept_manager to emp_test.dept_manager
rename table emp.emp to emp_test.emp
rename table emp.employees to emp_test.employees
rename table emp.salaries_temp to emp_test.salaries_temp
rename table emp.titles to emp_test.titles
loading views
loading triggers, routines and events
Dropping database emp

real    0m0.643s
user    0m0.053s
sys     0m0.131s


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| emp_test           |
| mysql              |
| performance_schema |
| test               |
+--------------------+

كما ترون في الإخراج أعلاه ، تمت إعادة تسمية مخطط قاعدة البيانات "emp" إلى "emp_test" في أقل من ثانية. أخيرًا ، هذا هو البرنامج النصي من Percona المستخدم أعلاه في "الطريقة 2".

#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
set -e
if [ -z "$3" ]; then
    echo "rename_db <server> <database> <new_database>"
    exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
    echo "ERROR: New database already exists $3"
    exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "show create database $2\G" -sss | grep ^Create | awk -F'CHARACTER SET ' '{print $2}' | awk '{print $1}'`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
    echo "Error retrieving tables from $2"
    exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
    mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
    echo "drop trigger $TRIGGER"
    mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
    echo "rename table $2.$TABLE to $3.$TABLE"
    mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
    echo "loading views"
    mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
    echo "Dropping database $2"
    mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
    COLUMNS_PRIV="    UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
    PROCS_PRIV="    UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
    TABLES_PRIV="    UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
    DB_PRIV="    UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
    echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
    if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
    if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
    if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
    if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
    echo "    flush privileges;"
fi
12
Sathish D

بالنسبة إلى مستخدمي Mac ، لدى Sequel Pro خيار إعادة تسمية قاعدة البيانات في قائمة قاعدة البيانات. http://www.sequelpro.com/

12
Duke

من الممكن إعادة تسمية جميع الجداول الموجودة في قاعدة بيانات لتكون ضمن قاعدة بيانات أخرى دون الحاجة إلى تفريغ واستعادة كاملين.

 إجراءات السقوط إذا كانت موجودة. mysql.rename_db؛ 
 DELIMITER || 
 إنشاء عملية ] BEGIN 
 SELECT CONCAT ('CREATE DATABASE'، new_db، '؛') '# إنشاء قاعدة بيانات جديدة'؛ 
 table_name ، '`TO`' ، new_db ، '`.' '، table_name ،'`؛ ') `# تبديل الجدول` من معلومات_المنشورات.الجدول WHERE table_schema = old_db ؛ 
 ، old_db، '`؛')` # drop database old`؛ 
 END || 
 DELIMITER؛ 
 
 $ time mysql -uroot -e "call mysql .rename_db ('db1' ، 'db2') ؛ " | mysql -uroot 

ومع ذلك فإن أي مشغلات في الهدف ديسيبل لن تكون سعيدة. ستحتاج إلى إسقاطها أولاً ثم إعادة إنشائها بعد إعادة التسمية.

 mysql -uroot -e "call mysql.rename_db ('test'، 'blah2')؛" | mysql -uroot 
 خطأ 1435 (HY000) في السطر 4: المشغل في مخطط خاطئ 
9
TodoInTX

معظم الإجابات هنا خاطئة لسببين:

  1. لا يمكنك فقط استخدام RENAME TABLE ، لأنه قد تكون هناك طرق عرض ومشغلات. في حالة وجود مشغلات ، يفشل إعادة تسمية الجدول
  2. لا يمكنك استخدام mysqldump إذا كنت تريد "بسرعة" (كما هو مطلوب في السؤال) إعادة تسمية قاعدة بيانات كبيرة

تحتوي Percona على مدونة حول كيفية القيام بذلك بشكل جيد: https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/

والسيناريو المنشور (صنع؟) من قبل سايمون آر جونز الذي يفعل ما هو مقترح في هذا المنشور. قمت بإصلاح الخلل الذي وجدته في البرنامج النصي. يمكنك أن ترى هنا:

https://Gist.github.com/ryantm/76944318b0473ff25993ef2a7186213d

إليك نسخة منه:

#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
# @see https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/
set -e
if [ -z "$3" ]; then
    echo "rename_db <server> <database> <new_database>"
    exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
    echo "ERROR: New database already exists $3"
    exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = '$2'" -sss`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
    echo "Error retrieving tables from $2"
    exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
    mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
    echo "drop trigger $TRIGGER"
    mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
    echo "rename table $2.$TABLE to $3.$TABLE"
    mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
    echo "loading views"
    mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
    echo "Dropping database $2"
    mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
    COLUMNS_PRIV="    UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
    PROCS_PRIV="    UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
    TABLES_PRIV="    UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
    DB_PRIV="    UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
    echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
    if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
    if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
    if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
    if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
    echo "    flush privileges;"
fi

احفظه في ملف يسمى rename_db واجعل البرنامج النصي قابلاً للتنفيذ باستخدام chmod +x rename_db ثم استخدمه مثل ./rename_db localhost old_db new_db

8
ryantm

فيما يلي ملف دفعي كتبته لأتمتة من سطر الأوامر ، لكن لنظام Windows/MS-DOS.

بناء الجملة هو rename_mysqldb قاعدة بيانات newdatabase -u [user] -p [password]

:: ***************************************************************************
:: FILE: RENAME_MYSQLDB.BAT
:: ***************************************************************************
:: DESCRIPTION
:: This is a Windows /MS-DOS batch file that automates renaming a MySQL database 
:: by using MySQLDump, MySQLAdmin, and MySQL to perform the required tasks.
:: The MySQL\bin folder needs to be in your environment path or the working directory.
::
:: WARNING: The script will delete the original database, but only if it successfully
:: created the new copy. However, read the disclaimer below before using.
::
:: DISCLAIMER
:: This script is provided without any express or implied warranties whatsoever.
:: The user must assume the risk of using the script.
::
:: You are free to use, modify, and distribute this script without exception.
:: ***************************************************************************

:INITIALIZE
@ECHO OFF
IF [%2]==[] GOTO HELP
IF [%3]==[] (SET RDB_ARGS=--user=root) ELSE (SET RDB_ARGS=%3 %4 %5 %6 %7 %8 %9)
SET RDB_OLDDB=%1
SET RDB_NEWDB=%2
SET RDB_DUMPFILE=%RDB_OLDDB%_dump.sql
GOTO START

:START
SET RDB_STEP=1
ECHO Dumping "%RDB_OLDDB%"...
mysqldump %RDB_ARGS% %RDB_OLDDB% > %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=2
ECHO Creating database "%RDB_NEWDB%"...
mysqladmin %RDB_ARGS% create %RDB_NEWDB%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=3
ECHO Loading dump into "%RDB_NEWDB%"...
mysql %RDB_ARGS% %RDB_NEWDB% < %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=4
ECHO Dropping database "%RDB_OLDDB%"...
mysqladmin %RDB_ARGS% drop %RDB_OLDDB% --force
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=5
ECHO Deleting dump...
DEL %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
ECHO Renamed database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END

:ERROR_ABORT
IF %RDB_STEP% GEQ 3 mysqladmin %RDB_ARGS% drop %NEWDB% --force
IF %RDB_STEP% GEQ 1 IF EXIST %RDB_DUMPFILE% DEL %RDB_DUMPFILE%
ECHO Unable to rename database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END

:HELP
ECHO Renames a MySQL database.
ECHO Usage: %0 database new_database [OPTIONS]
ECHO Options: Any valid options shared by MySQL, MySQLAdmin and MySQLDump.
ECHO          --user=root is used if no options are specified.
GOTO END    

:END
SET RDB_OLDDB=
SET RDB_NEWDB=
SET RDB_ARGS=
SET RDB_DUMP=
SET RDB_STEP=
7
Johnny

الإجراء المخزن لـ TodoInTX لم ينجح تمامًا بالنسبة لي. ها هي طعنتي في ذلك:

 - الإجراء المخزن rename_db: إعادة تسمية قاعدة البيانات الخاصة بي من وسائل نسخ الجدول. 
 - التحذيرات: 
 - سوف يعوق أي قاعدة بيانات موجودة بنفس اسم "جديد" اسم قاعدة البيانات. 
 - ينسخ فقط الجداول ؛ لا يتم نسخ الإجراءات المخزنة وغيرها من كائنات قاعدة البيانات. 
 - Tomer Altman ([email protected]) 
 
 المحدد // // ...DRDROP PROPEDURE IF EXISTS rename_db؛ 
 CREATE PROCEDURE rename_db (IN old_db VARCHAR (100)، IN new_db VARCHAR (100)) 
 BEGIN 
 DECLARE current_table VARCHAR (100)؛ 
 DECLARE INT DEFAULT 0؛ 
 DECLARE old_tables CURSOR FOR select table_name from information_schema.tables حيث table_schema = old_db؛ 
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1؛ 
 
 SEToutput = CONCAT ('DROP SCHEMA IF EXISTS'، new_db، '؛')؛ 
 تحضير stmt FROM @ output ؛ 
 EXMUTE stmt ؛ 
 
 SEToutput = CONCAT ('CREATE SCHEMA IF NOT EXISTS'، new_db، '؛')؛ 
 تحضير stmt من @ الإخراج ؛ 
 EXMUTE STMT ؛ 
 
 OPEN old_tables ؛ 
 REPEAT 
 FETCH old_tables INTO current_table ؛ 
 إذا لم يتم القيام بذلك ، ثم 
 SEToutput = CONCAT ('تعديل الجدول' ، old_db ، '.' ، current_table ، 'إعادة تسمية' ، new_db ، '.' ، current_table ، '؛') ؛ 
 تحضير stmt من @ الإخراج ؛ 
 EXMUTE STMT ؛ 
 
 END IF ؛ 
 انتهى الأمر END REPEAT ؛ 
 
 CLOSE old_tables ؛ 
 
 END // Budap.____.] delimiter ؛ 
7
user757945

لراحتك ، يوجد أدناه قشرة صغيرة يجب تنفيذها بمعلمتين: اسم ديسيبل واسم ديسيبل جديد.

قد تحتاج إلى إضافة معلمات تسجيل الدخول إلى خطوط mysql إذا لم تستخدم ملف .my.cnf في الدليل الرئيسي. يرجى عمل نسخة احتياطية قبل تنفيذ هذا البرنامج النصي.


#!/usr/bin/env bash

mysql -e "CREATE DATABASE $2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
for i in $(mysql -Ns $1 -e "show tables");do
    echo "$1.$i -> $2.$i"
    mysql -e "rename TABLE $1.$i to $2.$i"
done
mysql -e "DROP DATABASE $1"
6
gerrit damen

أنا طرحت سؤالًا على Server Fault أحاول التغلب على وقت التوقف عن العمل عند استعادة قواعد البيانات الكبيرة جدًا باستخدام MySQL Proxy. لم أحقق أي نجاح ، لكنني أدركت في النهاية أن ما أردت هو وظيفة إعادة تسمية قاعدة البيانات لأن التفريغ/الاستيراد لم يكن خيارًا بسبب حجم قاعدة البيانات الخاصة بنا.

هناك وظيفة إعادة تسمية TABLE مدمجة في MySQL ، لذلك انتهيت من كتابة برنامج نصي Python بسيط للقيام بهذه المهمة من أجلي. لقد قمت { نشرتها على GitHub في حال كان ذلك مفيدًا للآخرين.

6
cclark

خطوات:

  1. ضرب http: // localhost/phpmyadmin/
  2. حدد قاعدة البيانات الخاصة بك
  3. انقر فوق علامة تبويب العمليات
  4. ستكون هناك علامة تبويب باسم "إعادة تسمية قاعدة البيانات إلى". أضف اسمًا جديدًا وحدد ضبط الامتيازات.
  5. انقر على الذهاب.

 enter image description here

6
Shubham Jain

أبسط طريقة هي استخدام برنامج HeidiSQL. إنه مجاني ومفتوح المصدر. يتم تشغيله على Windows وعلى أي Linux مع Wine (تشغيل تطبيقات Windows على Linux و BSD و Solaris و Mac OS X).

لتنزيل HeidiSQL ، goto http://www.heidisql.com/download.php .

لتنزيل Wine ، انتقل إلى http://www.winehq.org/ .

لإعادة تسمية قاعدة بيانات في HeidiSQL ، فقط انقر بزر الماوس الأيمن على اسم قاعدة البيانات وحدد "تحرير". ثم أدخل اسمًا جديدًا واضغط على "موافق".

انها بسيطة جدا.

5
Fathah Rehman P

إليك طريقة سريعة لإنشاء إعادة تسمية البرنامج النصي sql ، إذا كان لديك العديد من الجداول للتحرك.

SELECT DISTINCT CONCAT('RENAME TABLE ', t.table_schema,'.', t.table_name, ' TO ',     
t.table_schema, "_archive", '.', t.table_name, ';' ) as Rename_SQL 
FROM information_schema.tables t
WHERE table_schema='your_db_name' ;
4
yantaq

يبدو أن هناك من ذكر هذا ولكن هنا طريقة أخرى:

create database NewDatabaseName like OldDatabaseName;

ثم لكل طاولة تفعل:

create NewDatabaseName.tablename like OldDatabaseName.tablename;
insert into NewDataBaseName.tablename select * from OldDatabaseName.tablename;

ثم ، إذا كنت تريد ،

drop database OldDatabaseName;

قد تتمتع هذه الطريقة بميزة إجراء النقل بالكامل على الخادم بحركة مرور قريبة من الصفر على الشبكة ، لذلك سيكون أسرع بكثير من التفريغ/الاستعادة.

إذا كان لديك إجراءات مخزنة/طرق عرض/إلخ ، فقد ترغب في نقلها أيضًا.

4
Tuncay Göncüoğlu

بالنسبة لمستخدمي نظام التشغيل mac ، يمكنك استخدام Sequel Pro (مجانًا) ، والتي توفر فقط خيار إعادة تسمية قواعد البيانات. على الرغم من أنه لا يحذف قاعدة البيانات القديمة.

بمجرد فتح قاعدة البيانات ذات الصلة ، انقر فقط: Database -> Rename database...

4
Roee Gavirel

في MySQL Administrator ، قم بما يلي:

  1. تحت كتالوجات ، قم بإنشاء مخطط قاعدة بيانات جديد.
  2. انتقل إلى النسخ الاحتياطي وإنشاء نسخة احتياطية من المخطط القديم.
  3. تنفيذ النسخ الاحتياطي.
  4. انتقل إلى استعادة وفتح الملف الذي تم إنشاؤه في الخطوة 3.
  5. حدد "مخطط آخر" ضمن مخطط الهدف وحدد مخطط قاعدة البيانات الجديد.
  6. بدء الاستعادة.
  7. تحقق من المخطط الجديد ، وإذا كان يبدو جيدًا ، فاحذف المخطط القديم.
3
Tom

في phpmyadmin يمكنك بسهولة إعادة تسمية قاعدة البيانات

select database 

  goto operations tab

  in that rename Database to :

  type your new database name and click go

نسأل لإسقاط الجدول القديم وإعادة تحميل بيانات الجدول انقر فوق موافق في كليهما

تتم إعادة تسمية قاعدة البيانات الخاصة بك

3
murtaza.webdev

إذا كنت تستخدم phpMyAdmin يمكنك الذهاب إلى علامة التبويب "العمليات" بمجرد تحديد قاعدة البيانات التي تريد إعادة تسميتها. ثم انتقل إلى القسم الأخير "نسخ قاعدة البيانات إلى" (أو شيء من هذا القبيل) ، وإعطاء اسم ، واختر الخيارات أدناه. في هذه الحالة ، أعتقد أنه يجب عليك تحديد "هيكل وبيانات" و "إنشاء قاعدة بيانات قبل نسخ" خانات الاختيار ، وأخيراً ، اضغط على الزر "انتقال" في هذا القسم.

بالمناسبة ، أنا أستخدم phpMyAdmin باللغة الإسبانية ، لذلك لست متأكدًا من أسماء الأقسام باللغة الإنجليزية.

3
ecruz

إليك مقتطف Bash من سطر واحد لنقل جميع الجداول من مخطط إلى آخر:

history -d $((HISTCMD-1)) && mysql -udb_user -p'db_password' -Dold_schema -ABNnqre'SHOW TABLES;' | sed -e's/.*/RENAME TABLE old_schema.`&` TO new_schema.`&`;/' | mysql -udb_user -p'db_password' -Dnew_schema

يضمن أمر السجل في البداية ببساطة عدم حفظ أوامر MySQL التي تحتوي على كلمات المرور في سجل Shell.

تأكد من أن db_user لديه أذونات القراءة/الكتابة/الإفلات على المخطط القديم ، وقراءة/الكتابة/إنشاء أذونات على المخطط الجديد.

3
coffeefiend

لقد فعلت ذلك بهذه الطريقة: خذ نسخة احتياطية من قاعدة البيانات الموجودة لديك. سوف أعطيك db.Zip.tmp ثم في موجه الأوامر الكتابة التالية

"C:\ملفات البرنامج (x86)\MySQL\MySQL Server 5.6\bin\mysql.exe" -h localhost -u root -p [password] [اسم db جديد] <"C:\Backups\db.Zip.tmp "

3
Samra

يمكنك القيام بذلك بطريقتين.

  1. RENAME TABLE old_db.table_name TO new_db.table_name؛
  2. عمليات الانتقال-> هناك تستطيع أن ترى علامة التبويب خيارات الجدول. يمكنك تعديل اسم الجدول هناك.
2
jeeva

هذا هو النص البرمجي الدفعي الذي كتبته لإعادة تسمية قاعدة بيانات على Windows:

@echo off
set olddb=olddbname
set newdb=newdbname
SET count=1
SET act=mysql -uroot -e "select table_name from information_schema.tables where table_schema='%olddb%'"
mysql -uroot -e "create database %newdb%"
echo %act%
 FOR /f "tokens=*" %%G IN ('%act%') DO (
  REM echo %count%:%%G
  echo mysql -uroot -e "RENAME TABLE %olddb%.%%G to %newdb%.%%G"
  mysql -uroot -e "RENAME TABLE %olddb%.%%G to %newdb%.%%G"
  set /a count+=1
 )
mysql -uroot -e "drop database %olddb%"
2
Nadav Benedek

ALTER DATABASE هو الطريقة المقترحة للتغلب على هذا بواسطة MySQL و RENAME DATABASE يتم إسقاطها.

من13.1.32 إعادة تسمية بناء جملة قاعدة البيانات:

RENAME {DATABASE | SCHEMA} db_name TO new_db_name;

تمت إضافة هذا البيان في MySQL 5.1.7 ، ولكن تبين أنه خطير وتمت إزالته في MySQL 5.1.23.

2
xelber

يعمل هذا مع جميع قواعد البيانات ويعمل من خلال إعادة تسمية كل جدول باستخدام maatkit mysql toolkit } _

استخدم mk-find لطباعة وإعادة تسمية كل جدول. يحتوي صفحة الصفحة على العديد من الخيارات والأمثلة

mk-find --dblike OLD_DATABASE --print --exec "RENAME TABLE %D.%N TO NEW_DATABASE.%N"

إذا كان لديك maatkit مثبت ( وهو سهل للغاية ) ، فهذه هي أبسط طريقة للقيام بذلك.

2
Morgan Christiansson

في الحالة التي تبدأ فيها من ملف التفريغ مع العديد من قواعد البيانات ، يمكنك إجراء عملية تخريب على التفريغ:

sed -i -- "s|old_name_database1|new_name_database1|g" my_dump.sql
sed -i -- "s|old_name_database2|new_name_database2|g" my_dump.sql
...

ثم استيراد تفريغ الخاص بك. فقط تأكد من أنه لن يكون هناك تعارض في الأسماء.

1
RotS

لم يعمل حل TodoInTx ولا حل user757945 المخصص لي على MySQL 5.5.16 ، لذلك فهناك نسختي المعدّلة:

DELIMITER //
DROP PROCEDURE IF EXISTS `rename_database`;
CREATE PROCEDURE `rename_database` (IN `old_name` VARCHAR(20), IN `new_name` VARCHAR(20))
BEGIN
  DECLARE `current_table_name` VARCHAR(20);
  DECLARE `done` INT DEFAULT 0;
  DECLARE `table_name_cursor` CURSOR FOR SELECT `table_name` FROM `information_schema`.`tables` WHERE (`table_schema` = `old_name`);
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET `done` = 1;

  SET @sql_string = CONCAT('CREATE DATABASE IF NOT EXISTS `', `new_name` , '`;');
  PREPARE `statement` FROM @sql_string;
  EXECUTE `statement`;
  DEALLOCATE PREPARE `statement`;

  OPEN `table_name_cursor`;
  REPEAT
    FETCH `table_name_cursor` INTO `current_table_name`;
    IF NOT `done` THEN

      SET @sql_string = CONCAT('RENAME TABLE `', `old_name`, '`.`', `current_table_name`, '` TO `', `new_name`, '`.`', `current_table_name`, '`;');
      PREPARE `statement` FROM @sql_string;
      EXECUTE `statement`;
      DEALLOCATE PREPARE `statement`;

    END IF;
  UNTIL `done` END REPEAT;
  CLOSE `table_name_cursor`;

  SET @sql_string =  CONCAT('DROP DATABASE `', `old_name`, '`;');
  PREPARE `statement` FROM @sql_string;
  EXECUTE `statement`;
  DEALLOCATE PREPARE `statement`;
END//
DELIMITER ;

آمل أن يساعد شخص ما في وضعي! ملاحظة: @sql_string ستستمر في الجلسة بعد ذلك. لم أتمكن من كتابة هذه الوظيفة دون استخدامها.

1
Milosz

اعتدت الطريقة التالية لإعادة تسمية قاعدة البيانات

  1. احتفظ بنسخة احتياطية من الملف باستخدام mysqldump أو أي أداة DB مثل heidiSQL أو mysql Administrator وما إلى ذلك

  2. افتح ملف النسخ الاحتياطي (مثل backupfile.sql) في بعض برامج تحرير النصوص.

  3. بحث واستبدال اسم قاعدة البيانات وحفظ الملف.

4. استعادة ملف sql تحريرها

1
Adarsha

إذا كنت تستخدم طرق عرض هرمية (طرق عرض سحب البيانات من طرق عرض أخرى) ، فقد لا يعمل استيراد الإخراج الخام من mysqldump لأن mysqldump لا يهتم بترتيب المشاهدات الصحيح. لهذا السبب ، قمت بكتابة برنامج نصي الذي يعيد ترتيب طرق العرض لتصحيح الترتيب أثناء الطيران.

يبدو مثل هذا:

#!/usr/bin/env Perl

use List::MoreUtils 'first_index'; #apt package liblist-moreutils-Perl
use strict;
use warnings;


my $views_sql;

while (<>) {
    $views_sql .= $_ if $views_sql or index($_, 'Final view structure') != -1;
    print $_ if !$views_sql;
}

my @views_regex_result = ($views_sql =~ /(\-\- Final view structure.+?\n\-\-\n\n.+?\n\n)/msg);
my @views = (join("", @views_regex_result) =~ /\-\- Final view structure for view `(.+?)`/g);
my $new_views_section = "";
while (@views) {
    foreach my $view (@views_regex_result) {
        my $view_body = ($view =~ /\/\*.+?VIEW .+ AS (select .+)\*\/;/g )[0];
        my $found = 0;
        foreach my $view (@views) {
            if ($view_body =~ /(from|join)[ \(]+`$view`/) {
                $found = $view;
                last;
            }
        }
        if (!$found) {
            print $view;
            my $name_of_view_which_was_not_found = ($view =~ /\-\- Final view structure for view `(.+?)`/g)[0];
            my $index = first_index { $_ eq $name_of_view_which_was_not_found } @views;
            if ($index != -1) {
                splice(@views, $index, 1);
                splice(@views_regex_result, $index, 1);
            }
        }
    }
}

الاستعمال:
mysqldump -u username -v olddatabase -p | ./mysqldump_view_reorder.pl | mysql -u username -p -D newdatabase

1
gadelat

أنت يا رفاق ستطلقون النار على هذا ، وعلى الأرجح لن ينجح هذا في كل مرة ، وبالتأكيد هو ضد كل بلاه بلاه ... ولكن ما جربته للتو هو ... إيقاف محرك MySQL ، قم بتسجيل الدخول كجذر وببساطة إعادة تسمية DB على مستوى نظام الملفات ....

أنا على OSX ، ولم أغير الحالة إلا من bedbf إلى BEDBF. لدهشتي، وانها عملت...

أنا لا أوصي به على قاعدة بيانات الإنتاج. لقد جربت هذا كتجربة ...

حظا سعيدا في كلتا الحالتين :-)

0
Lawrence

لقد نشرت هذا كيف يمكنني تغيير اسم قاعدة البيانات باستخدام الخلية؟ اليوم بعد أيام من خدش الرأس وشد الشعر. الحل بسيط للغاية تصدير مخطط إلى ملف .sql وفتح الملف وتغيير اسم قاعدة البيانات/المخطط في قسم sql CREAT TABLE في الأعلى. هناك ثلاث حالات أو أكثر وقد لا تكون في أعلى الصفحة في حالة حفظ مخططات متعددة في الملف. من الممكن تحرير قاعدة البيانات بأكملها بهذه الطريقة ، لكنني أتوقع أنه في قواعد البيانات الكبيرة قد يكون الأمر مؤلمًا بعد كل مثيلات خاصية الجدول أو الفهرس.

0
E.R.Rider

لا توجد طريقة مباشرة يمكنك من خلالها تغيير اسم قاعدة بيانات حالية ولكن يمكنك تحقيق هدفك باتباع الخطوات التالية: - 1). إنشاء newdb. 2). استخدام newdb. 3). إنشاء جدول table_name (حدد * من olddb.table_name) ؛

من خلال القيام بالأعلى ، يمكنك نسخ البيانات من جدول olddb وإدراج تلك الموجودة في جدول newdb. إعطاء اسم الجدول نفسه.

II). RENAME TABLE old_db.table_name TO new_db.table_name؛

0
rajesh