Как переименовать базу данных MySQL?
В онлайн-руководстве MySQL говорится о команде RENAME DATABASE (эта страница документации была удалена Oracle некоторое время назад):
Этот оператор был добавлен в MySQL 5.1.7, но был признан опасным и был удален в MySQL 5.1.23.
Итак, как действовать? Обоснование: мы начали с кодового имени проекта и теперь хотим, чтобы имя базы данных отражало окончательное имя проекта.
Из этот сообщение в блоге Илана Хазана:
В MySQL нет поддержки переименования базы данных. Чтобы переименовать базу данных MySQL, вы можете выполнить одно из следующих действий:
Создайте новую базу данных и переименуйте все таблицы в старой базе данных, чтобы они были в новой базе данных:
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;
В оболочке 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"
Напишите простой сценарий Linux (мое любимое решение)
#!/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"
Если все ваши таблицы являются MyISAM, вы можете переименовать старое имя папки базы данных:
MySQL отстой для этого. Единственное твердое надежное решение - использовать phpMyAdmin
.
Login
-> щелкнуть Scheme
-> щелкнуть Operations
-> найти Rename database to:
-> написать NewName
> щелкнуть Go
.
Так просто, как, что. Все разрешения сохраняются.
Я нашел очень простое решение: выключите MySQL, переименуйте каталог базы данных и перезапустите. Вот и все!
Это немного опасно, если у вас есть код SQL или данные, относящиеся к старому имени. Затем вам нужно изменить это, прежде чем перезапустить приложение. Но мне это было не нужно, а YMV.
Google дает несколько указателей, подобных этим двум:
Я обычно создаю новую базу данных, а затем выгружаю таблицы из старой в файл .sql (с mysqldump), редактирую файл, делаю какие-то s/old_database/new_database/g
а затем повторно импортируйте его в новую базу данных.
Возможно, это не лучший способ сделать это, но он работает.
Если у вас есть возможность использовать MySQL Management-Tool (например, phpMyAdmin), вы можете легко переименовать его, поскольку они создают запрос для вас.
В phpMyAdmin они также создают каждую таблицу и вставляют данные с помощью «INSERT INTO ... SELECT * FROM ...». Таким образом, связывая их, они копируют данные.
Если вы не можете этого сделать, я бы рекомендовал сделать дамп и повторно импортировать sql-файл в новую базу данных.
Удачи!
С уважением, Бен.
Я использовал следующий метод для переименования базы данных
сделайте резервную копию файла с помощью mysqldump или любого инструмента БД, например, heidiSQL, администратора mysql и т. д.
Откройте файл резервной копии (например, backupfile.sql) в каком-нибудь текстовом редакторе.
Найдите и замените имя базы данных и сохраните файл.
Восстановить отредактированный sql файл