Как быстро переименовать базу данных MySQL (изменить имя схемы)? - PullRequest
874 голосов
/ 16 сентября 2008

Руководство MySQL на MySQL охватывает это.

Обычно я просто выкидываю базу данных и импортирую ее под новым именем. Это не вариант для очень больших баз данных. Очевидно, RENAME {DATABASE | SCHEMA} db_name TO new_db_name; совершает плохие поступки, существует только в нескольких версиях и в целом является плохой идеей .

Это должно работать с InnoDB , который хранит вещи совсем иначе, чем MyISAM .

Ответы [ 47 ]

6 голосов
/ 15 марта 2012

Для вашего удобства ниже приведен небольшой шелл-скрипт, который должен быть выполнен с двумя параметрами: db-name и new db-name.

Вам может потребоваться добавить параметры входа в 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 голосов
/ 18 апреля 2010

I поставил вопрос о сбое сервера , пытаясь обойти время простоя при восстановлении очень больших баз данных с помощью MySQL Proxy. У меня не было никакого успеха, но в конце концов я понял, что мне нужна функциональность RENAME DATABASE, потому что дамп / импорт не был возможен из-за размера нашей базы данных.

В MySQL встроена функциональность RENAME TABLE, поэтому в итоге я написал простой скрипт на Python, который сделает эту работу за меня. Я разместил его на GitHub на случай, если он будет полезен другим.

5 голосов
/ 07 февраля 2013

Самый простой способ - использовать программное обеспечение HeidiSQL. Это бесплатно и с открытым исходным кодом. Он работает на Windows и в любом Linux с Wine (запуск приложений Windows на Linux, BSD, Solaris и Mac OS X).

Чтобы загрузить HeidiSQL, перейдите на http://www.heidisql.com/download.php.

Чтобы скачать Wine, goto http://www.winehq.org/.

Чтобы переименовать базу данных в HeidiSQL, просто щелкните правой кнопкой мыши на имени базы данных и выберите «Изменить». Затем введите новое имя и нажмите «ОК».

Это так просто.

4 голосов
/ 04 октября 2017

Для пользователей Mac вы можете использовать Sequel Pro (бесплатно), которые просто предоставляют возможность переименовывать базы данных. Хотя это не удаляет старую БД.

после открытия соответствующей БД просто нажмите: Database -> Rename database...

4 голосов
/ 21 сентября 2017

Кажется, никто не упомянул об этом, но вот другой способ:

create database NewDatabaseName like OldDatabaseName;

затем для каждой таблицы выполните:

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

тогда, если хотите,

drop database OldDatabaseName;

Преимущество этого подхода состоит в том, что вся передача выполняется на сервере с почти нулевым сетевым трафиком, поэтому он будет выполняться намного быстрее, чем дамп / восстановление.

Если у вас есть хранимые процедуры / представления / и т. Д., Вы также можете их перенести.

4 голосов
/ 11 августа 2014

Вот быстрый способ создания сценария переименования 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' ;
3 голосов
/ 21 августа 2013

в phpmyadmin вы можете легко переименовать базу данных

select database 

  goto operations tab

  in that rename Database to :

  type your new database name and click go

попросить удалить старую таблицу и перезагрузить данные таблицы. Нажмите OK в обоих

Ваша база данных переименована

3 голосов
/ 03 октября 2008

В MySQL Administrator сделайте следующее:

  1. В разделе "Каталоги" создайте новую схему базы данных.
  2. Перейдите в Резервное копирование и создайте резервную копию старая схема.
  3. Выполнить резервное копирование.
  4. Зайдите в Восстановить и откройте файл создан на шаге 3.
  5. Выберите «Другая схема» в разделе «Цель». Схема и выбор новой базы данных схема.
  6. Начать восстановление.
  7. Проверить новую схему и, если она выглядит хорошо, удали старый.
3 голосов
/ 12 июля 2011

Если вы используете phpMyAdmin , вы можете перейти на вкладку «Операции», выбрав базу данных, которую хотите переименовать. Затем перейдите к последнему разделу «Копировать базу данных» (или что-то в этом роде), дайте имя и выберите параметры ниже. В этом случае, я думаю, вы должны установить флажки «Структура и данные» и «Создать базу данных перед копированием» и, наконец, нажать кнопку «Перейти» в этом разделе.

Кстати, я использую phpMyAdmin на испанском, поэтому я не уверен, какие названия разделов на английском.

3 голосов
/ 26 июля 2017

Я сделал это так: Сделайте резервную копию вашей существующей базы данных. Это даст вам db.zip.tmp, а затем в командной строке напишите следующее

"C: \ Program Files (x86) \ MySQL \ MySQL Server 5.6 \ bin \ mysql.exe" -h localhost -u root -p [пароль] [новое имя базы данных] <"C: \ Backups \ db.zip.tmp" </p>

...