Назад | Перейти на главную страницу

Имя базы данных MySQL с дефисом

Недавно я обновил свой промежуточный сервер базы данных с MySQL 5.0.84 до 5.1.72. Я пытаюсь восстановить mysqldump после обновления. Имя базы данных в дампе: gss-app. Но имя папки базы данных под /var/lib/mysql оказался gss@022dapp, но когда я вхожу в mysql, используя mysql -u root -p и введите show databases; он перечисляет имя базы данных как gss-app только и я могу Use Database gss-app и перечислите таблицы, используя show tables команда.

Восстановление не удалось с ошибкой Got a packet bigger than --max_allowed_packet size. На этот раз база данных была частично восстановлена, и я воспользовался случаем, чтобы переименовать gss@022dapp папку в gss-app и вошел в оболочку mysql.

В нем указано имя базы данных как @mysql@gss-app и мне не удалось попасть в базу данных. Теперь я снова запускаю восстановление базы данных с помощью --max_allowed_packet_size=1024M и я вижу gss@022dapp папка была создана в /var/lib/mysql.

Должен ли я беспокоиться о названии папки в /var/lib/mysql? Или я могу использовать другое имя базы данных при восстановлении?

В частности, на ваш вопрос об использовании другого имени при восстановлении: с mysqldump вы можете либо сделать mysqldump databasename или mysqldump --databases databasename. Первое не ставит create db заявление в нем, последний делает.

Когда вы сделали дамп с помощью предыдущего оператора, вы можете просто вручную создать новый db и загрузить дамп чем-то вроде mysql newdbname < dump.sql. В последнем случае вы можете просто открыть файл дампа и изменить имя.

Замечание, я думаю, что это плохой дизайн в MySQL mysqldump часть, чтобы иметь эту разницу, BTW. Если вы делаете резервную копию без --databases оператор, вы должны сначала создать базу данных, прежде чем вы сможете восстановить. И эта база данных может иметь другую кодировку или сопоставление, чем исходная. На мой взгляд, если вы дампите базу данных, она должна содержать все данные и метаданные. То же самое и с необходимостью поставки --routines и --events. Я могу представить такие варианты, как --no-routines может быть удобно, но по умолчанию не демпинг рутины? Хм.