Я экспортировал базу данных 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
перед импортом, так как об этом позаботятся вы.