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