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

Имя базы данных 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? Или можно использовать другое имя базы данных при восстановлении?

решение1

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

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

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

Связанный контент