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

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

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

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

Ответы [ 47 ]

0 голосов
/ 05 января 2012

Проще всего открыть MYSQL >> SELECT DB , имя которого вы хотите изменить >> Нажмите «операция» , затем поместите Новое имя в «Переименовать базу данных в : "field затем нажмите " Go " button

Simple!

0 голосов
/ 30 июня 2010

Действительно, самый простой ответ - экспортировать старую базу данных, а затем импортировать ее в новую, созданную вами, чтобы заменить старую. Конечно, вы должны использовать phpMyAdmin или командную строку, чтобы сделать это.

Переименование и настройка базы данных Jerry - это BAD-IDEA! НЕ ДЕЛАЙТЕ ЭТОГО. (Если только вы не "хакерского типа", сидите в подвале своей матери в темноте и едите пиццу, спящую днем).

У вас будет больше проблем и работы, чем вы хотите.

Итак,

  1. Создайте новую базу данных и назовите ее правильным образом.
  2. Перейдите к phpMyAdmin и откройте базу данных, которую вы хотите экспортировать.
  3. Экспортируйте его (проверьте опции, но вы должны быть в порядке со значениями по умолчанию.
  4. Вы получите файл, похожий или похожий на этот.
  5. Расширение этого файла .sql

    - phpMyAdmin SQL Dump - версия 3.2.4

    - http://www.phpmyadmin.net

    - Хост: localhost - Время генерации: 30 июня 2010 г. в 12:17 - Версия сервера: 5.0.90 - Версия PHP: 5.2.6

    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

    / *! 40101 SET @OLD_CHARACTER_SET_CLIENT = @@ CHARACTER_SET_CLIENT /; / ! 40101 SET @OLD_CHARACTER_SET_RESULTS = @@ CHARACTER_SET_RESULTS /; / ! 40101 SET @OLD_COLLATION_CONNECTION = @@ COLLATION_CONNECTION /; / ! 40101 SET NAMES utf8 * /;

    -

    - База данных: mydatab_online


    -

    - Структура таблицы для таблицы user

    СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ user ( timestamp int (15) NOT NULL по умолчанию '0', ip varchar (40) NOT NULL по умолчанию '', file varchar (100) NOT NULL по умолчанию '', ПЕРВИЧНЫЙ КЛЮЧ (timestamp), КЛЮЧ ip (ip), КЛЮЧ file (file) ) ENGINE = MySAM CHARSET ПО УМОЛЧАНИЮ = latin1;

    -

    - Сброс данных для таблицы user

    INSERT INTO user (timestamp, ip, file) ЗНАЧЕНИЯ (1277911052, '999.236.177.116', ''), (1277911194, '999.236.177.116', '');

Это будет ваш файл .sql. Тот, который вы только что экспортировали.

Найдите его на своем жестком диске; обычно это в /temp. Выберите пустую базу данных с правильным именем (причина, по которой вы читаете это). СКАЖИТЕ: Импорт - GO

Подключите вашу программу к правильной базе данных, введя ее в файл конфигурации .php. Обновите сервер (оба. Почему? Потому что я UNIX oldtimer , и я так и сказал. Теперь вы должны быть в хорошей форме. Если у вас есть дополнительные вопросы, посетите меня в Интернете.

0 голосов
/ 23 мая 2016

Здесь уже есть много действительно хороших ответов, но я не вижу версию PHP. Это копирует 800M DB примерно за секунду.

$oldDbName = "oldDBName";
$newDbName = "newDBName";
$oldDB     = new mysqli("localhost", "user", "pass", $oldDbName);
if($oldDB->connect_errno){
    echo "Failed to connect to MySQL: (" . $oldDB->connect_errno . ") " . $oldDB->connect_error;
    exit;
}
$newDBQuery = "CREATE DATABASE IF NOT EXISTS {$newDbName}";
$oldDB->query($newDBQuery);
$newDB = new mysqli("localhost", "user", "pass");
if($newDB->connect_errno){
    echo "Failed to connect to MySQL: (" . $newDB->connect_errno . ") " . $newDB->connect_error;
    exit;
}

$tableQuery  = "SHOW TABLES";
$tableResult = $oldDB->query($tableQuery);
$renameQuery = "RENAME TABLE\n";
while($table = $tableResult->fetch_array()){
    $tableName = $table["Tables_in_{$oldDbName}"];
    $renameQuery .= "{$oldDbName}.{$tableName} TO {$newDbName}.{$tableName},";
}
$renameQuery = substr($renameQuery, 0, strlen($renameQuery) - 1);
$newDB->query($renameQuery);
0 голосов
/ 04 октября 2010

Если вы используете phpMyAdmin , вы просто идете в папку mysql в xamp, закрываете phpMyAdmin и просто переименовываете папку, которую вы видите там, в качестве имени вашей базы данных и просто перезапускаете свой phpMyAdmin. Вы можете видеть, что эта база данных переименована.

0 голосов
/ 02 сентября 2014

I). Нет способа напрямую изменить имя существующей БД Но вы можете достичь своей цели, выполнив следующие действия: - 1). Создать newdb. 2). Используйте newdb. 3). создать таблицу имя_таблицы (выберите * из старогоdb.table_name);

Сделав выше, скопируйте данные из таблицы olddb и вставьте их в таблицу newdb. Назовите имя таблицы таким же.

II). Переименовать таблицу old_db.table_name в new_db.table_name;

0 голосов
/ 16 июля 2018

Простой способ

ALTER DATABASE `oldName` MODIFY NAME = `newName`;

или вы можете использовать онлайн генератор sql

0 голосов
/ 02 августа 2013

Вы, ребята, собираетесь застрелить меня за это, и, скорее всего, это не сработает каждый раз, и, конечно, это противоречит всей логике, бла-бла ... Но я только что попробовал ... ОСТАНОВИТЬ движок MySQL , войдите в систему как root и просто переименуйте БД на уровне файловой системы ....

Я на OSX и только изменил регистр, с bedbf на BEDBF. К моему удивлению это сработало ...

Я бы не рекомендовал это на производственной БД. Я просто попробовал это как эксперимент ...

Удачи в любом случае: -)

...