SQLinfo.ru - Все о MySQL PG day 17

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.03.2011 13:15:04

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 818

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

http://dev.mysql.com/doc/refman/5.1/en/ … abase.html

RENAME {DATABASE | SCHEMA} db_name TO new_db_name;

This statement was added in MySQL 5.1.7 but was found to be dangerous and was removed in MySQL 5.1.23.

И как теперь базы переименовывать? yikes

Неактивен

 

#2 16.03.2011 13:33:07

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3749

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

Остановить MySQL переименовать каталог, запустить MySQL. Лучше не переимновывать, а сохранить старое название и создать символическую ссылку.

Неактивен

 

#3 16.03.2011 19:29:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 818

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

Понятно..
Я так и не понял, почему они эту возможность убрали. Что за идиотизм..

Неактивен

 

#4 17.03.2011 01:26:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6610

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

Каталоги переименовывать опасно. Например, с innodb_file_per_table это
гарантирует, что таблички не подцепятся. И именно поэтому rename database
выкинули — это опасная операция.

Неактивен

 

#5 17.03.2011 16:43:41

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 818

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

Я бы понял, если бы они именно поэтому RENAME DATABASE исправили, а не выкинули smile

Неактивен

 

#6 17.03.2011 21:40:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6610

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

Ммм.. Миш, ну как тут объяснить. Пусть у тебя в руках есть циркулярная пила
большого диаметра. Она большая, тяжелая и крутится быстро. Аналогом RENAME
DATABASE в этом примере будет тяжелый маховик, который приделывается к
лезвию для того, чтобы снизить нагрузку на двигатель, когда ты вдруг начинаешь
пилить толстый бетонный столб. Но, если ты когда-нибудь держал маховик в ру-
ках, ты знаешь, что один неудачный поворот — и эта штука движется совсем не
туда, куда ты хочешь. А если это насажено на циркулярную пилу, оно тебе в
лучшем случае обрезает ноги, а в худшем — голову. И правильное решение тут
не доработать конструкцию маховика, а оторвать его совсем smile

Неактивен

 

#7 18.03.2011 13:38:10

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 818

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

Зато бетонные столбы теперь не спилить, а только выкапывать smile

В общем, как я понял, порядок действий такой:

1) Каталог переименовать

2) UPDATE mysql.db SET Db = 'newname' WHERE Db = 'oldname';

Что еще? Ничего не забыл?

Да, это для муисамной базы. А как быть с InnoDB?

Неактивен

 

#8 18.03.2011 21:06:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6610

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

Брр, зачем же ты раскручиваешь циркулярку веревкой? Второй пункт — дикое
непотребное зло, срочно сотри его smile

mysqldump | mysql — единственный правильный способ переименовывать базы,
содержащие innodb. И mysqlhotcopy — если все таблички MyISAM.

Неактивен

 

#9 18.03.2011 22:55:43

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 818

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

Э, погоди. Мы щас именно о переименовании говорим.

mysqldump | mysql - это копирование.
Копирование отличается от переименования тем, что:

1. Все выданные на старую базу права придется выдавать заново на новую

2. Если база больших размеров, то это займет дофига системных ресурсов вообще.

Так что, выходит, именно переименовать вообще никак нельзя?

Неактивен

 

#10 19.03.2011 01:37:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6610

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

Нет, нельзя.

Неактивен

 

#11 23.04.2016 23:13:08

Belenkiy
Участник
Зарегистрирован: 23.04.2016
Сообщений: 1

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

CREATE DATABASE `test2` /*!40100 COLLATE 'latin1_swedish_ci' */;
RENAME TABLE `test1`.`table1` TO `test2`.`table1`, `test1`.`table2` TO `test2`.`table2`, `test1`.`table3` TO `test2`.`table3`;
DROP DATABASE `test1`;

например. Если нет триггеров, функций и т.д. а только таблички

Неактивен

 

#12 24.04.2016 15:24:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6610

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

Прикольно, про такое решение не думали smile

Неактивен

 

#13 25.06.2016 05:04:56

AlexSurkoff59
Участник
Зарегистрирован: 25.06.2016
Сообщений: 1

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

paulus написал:

И правильное решение тут не доработать конструкцию маховика, а оторвать его совсем smile

Вот тут я с Вами не согласен. Иногда все-таки лучше доработать, чем оторвать. Принцип "ломать не строить" далеко не всегда бывает правилен. Оторвать - дело не хитрое, но иногда и подумать бывает неплохо...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson