Вопрос: Как переименовать базу данных MySQL?


Как переименовать базу данных MySQL?

В онлайн-руководстве MySQL сказано о команде RENAME DATABASE (эта страница документации была удалена Oracle некоторое время назад):

Это заявление было добавлено в MySQL 5.1.7, но было обнаружено, что оно опасно и   был удален в MySQL 5.1.23.

Итак, как действовать? Обоснование: мы начали с кодового имени для проекта и хотим, чтобы имя базы данных теперь отражало окончательное название проекта.


38
2017-10-27 07:35


Источник


Все четыре ответа имеют смысл. Это вопрос со многими возможными решениями. - nalply
stackoverflow.com/questions/12190000/rename-mysql-database/... - Sathish D
stackoverflow.com/questions/67093/... - Sathish D


Ответы:


Из это сообщение блога Илана Хазана:

В 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. В оболочке Linux используйте mysqldump для резервного копирования старой базы данных, а затем восстановите сбрасываемую базу данных под новым именем с помощью утилиты MySQL. Наконец, используйте команду drop database для удаления старой базы данных. Этот параметр может плохо работать для большой базы данных.

    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. Напишите простой скрипт Linux (мое любимое решение)

    #!/bin/bash
    
    mysqlconn="mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost"
    olddb=xxxx
    newdb=xxxx
    
    #$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"
    
  4. Если все ваши таблицы являются MyISAM, вы можете переименовать имя старой папки базы данных:

    1. Завершите работу сервера MySQL,
    2. Переименуйте имя папки базы данных на новое имя,
    3. Запустите сервер MySQL.

48
2017-09-27 15:40



Ниже приведен альтернативный способ создания команды переименования таблиц в SQL в MySQL непосредственно: 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';; - Syclone
Но если вы не введете данные в новую БД, они будут потеряны - rainman
tThanks. Это лучший ответ. Спасибо огромное! - daixtr


MySQL вроде как отстой для этого. Единственное надежное надежное решение - использовать phpMyAdmin,

Login -> щелчок  Scheme -> щелчок  Operations -> найти Rename database to: -> написать NewName > щелчок  Go,

Так просто. Все разрешения переносятся.


9
2017-10-27 07:42



+1 для GUI-решения, но простые команды и скрипты в ответ на wiki сообщества также отлично «надежны и надежны», - Will Sheppard


Я имею тенденцию создавать новую базу данных, а затем выгружать таблицы из старой, в .sql-файл (с помощью mysqldump), редактировать файл, делать какие-то s/old_database/new_database/g а затем переименуйте его в новый db.
Наверное, это не лучший способ сделать это, но он работает.


4
2017-10-29 13:50





Я нашел очень простое решение: закройте 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


3
2017-09-11 05:26





Я использовал следующий метод для переименования базы данных

  1. возьмите резервную копию файла с помощью mysqldump или любого инструмента DB, например, heidiSQL, администратора mysql и т. д.

  2. Откройте резервный файл (например, файл backupfile.sql) в каком-либо текстовом редакторе.

  3. Найдите и замените имя базы данных и сохраните файл.

  4. Восстановить отредактированный файл sql


1
2017-10-27 08:53





Если у вас есть возможность использовать инструмент управления MySQL (например, phpMyAdmin), вы можете легко переименовать его, когда они создадут запрос для вас.

В phpMyAdmin они также создают каждую таблицу и вставляют данные «INSERT INTO ... SELECT * FROM ...». Таким образом, привязывая, они копируют данные.

Если вы не можете этого сделать, я бы рекомендовал сделать дамп и повторно импортировать sql-файл в новую базу данных.

Удачи!

С Уважением, Бен.


0