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

Почему Mysql или Mysqldump сообщает об ошибке 1049, база данных не найдена?

Я экспортировал базу данных SQL для своего WordPress перед восстановлением моего Debian 8 VPS, потому что я не мог исправить некоторые сообщения об ошибках, которые я получал. Я сделал следующее.

$ mysql -u root -p wordpressDB < /var/www/html/example.com/backups/backup.sql

Я получаю следующее сообщение:

ERROR 1049 (42000): Unknown database 'wordpressDB'

Я тоже пробовал это делать.

MySQL -u wordpress -p wordpressDB < backup.sql

Но когда я ввел пароль, он сказал, что он недействителен. Я открыл файл SQL в блокноте, и имя базы данных действительно существует. Я экспортировал этот файл с помощью mysqldump, и я попытался импортировать с помощью MySQL и mysqldump, но оба раза это было безуспешно.

Судя по вашим комментариям под вашим вопросом, похоже, что вы, вероятно, пропустили --databases вариант, когда вы использовали mysqldump для резервного копирования базы данных.

Если вы сделаете резервную копию баз данных, выполнив mysqldump <database-name>, то резервная копия не создает для вас базу данных заново. При восстановлении из этой резервной копии вам необходимо создать базу данных, которую вы хотите импортировать, а затем импортировать в эту базу данных, имя которой может совпадать, а может и не совпадать с именем базы данных, которую вы экспортировали ранее.

Если вы не хотите, чтобы это требовалось, тогда при создании резервной копии вы экспортируете следующим образом: mysqldump --databases <database-name>. При этом в резервной копии будет команда для воссоздания базы данных при ее обратном импорте в MySQL.

Между этими двумя способами использования есть и другие различия. Если вы используете первую версию, то любые символы после имени базы данных считаются именами таблиц для включения в резервную копию. Как в: mysqldump MyDatabase Table1 Table2 Table3 для резервного копирования таблиц 1, 2 и 3, но не других.

Во втором варианте все символы после исходного имени базы данных также рассматриваются как дополнительные имена баз данных, поэтому вы можете получить несколько баз данных. mysqldump --databases HRDatabase WebsiteDatabase DevTestDatabase Это должно экспортировать все три базы данных.

Но вернемся к главному: в следующий раз, когда вы воспользуетесь mysqldump, если указать --databases вариант, то вам не нужно будет вручную создавать базу данных и use перед импортом, так как об этом позаботятся вы.