Ошибка импорта дампа SQL в MySQL: Неизвестная база данных / Невозможно создать базу данных

84

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

Это сообщение об ошибке отображается, если database_nameоно еще не создано:

username= имя пользователя, имеющего доступ к базе данных на исходном сервере.
database_name= имя базы данных с исходного сервера

$ mysql -u username -p -h localhost database_name < dumpfile.sql   
Enter password:  
ERROR 1049 (42000): Unknown database 'database_name' 

Если я вхожу в MySQL как root и создаю базу данных, database_name

mysql -u root  
create database database_name;  
create user username;# same username as the user from the database I got the dump from.  
grant all privileges on database_name.* to username@"localhost" identified by 'password';  
exit mysql

затем попробуйте снова импортировать дамп sql:

$ mysql -u username -p database_name < dumpfile.sql  
Enter password:  
ERROR 1007 (HY000) at line 21: Can't create database 'database_name'; database exists

Как мне импортировать файл дампа SQL?

Брайан Уилок
источник

Ответы:

39

Откройте файл sql и закомментируйте строку, в которой пытается создать существующую базу данных.

Bjorn
источник
8
@BryanWheelock Я думаю, что лучшим (промышленным) вариантом было бы не выбирать базу данных в вашей команде, поэтому она становится: "mysql -u username -p -h localhost <dumpfile.sql". Database_name - необязательный параметр. Если ваш файл дампа содержит инструкцию «создать базу данных», он будет создан.
toni07
Чтобы немного подробнее рассказать об этом, в самой первой строке моего файла * .sql было следующее: CREATE DATABASE IF NOT EXISTS `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; Измените это на (примечание / * в начале): / * СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ `database_name` / *! 40100 НАБОР СИМВОЛОВ ПО УМОЛЧАНИЮ latin1 * /; эффективно комментирует команду, и ИМПОРТ должен работать. Просто не забудьте быть активным внутри базы данных, в которую вы хотите, чтобы ИМПОРТ вставлял таблицы, иначе вы можете попасть в беспорядок!
ntk4
49

Это известная ошибка MySQL.

ошибка 42996
ошибка 40477

Как видите, это известная проблема с 2008 года, и они еще не исправили ее !!!

РАБОТА
Сначала вам нужно создать базу данных для импорта. Таблицы не нужны. Затем вы можете импортировать свою базу данных.

  1. сначала запустите командную строку MySQL (при необходимости примените имя пользователя и пароль)
    C:\>mysql -u user -p

  2. Создайте свою базу данных и выйдите

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Импортируйте выбранную базу данных из файла дампа
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Вы можете заменить localhost IP-адресом или доменом любого сервера MySQL, на который хотите выполнить импорт. Причина использования команды DROP в приглашении mysql - убедиться, что мы начинаем с пустой и чистой базы данных.

Макс Килланд
источник
2
Я ценю ответ. Сейчас 2012 год, и похоже, что ошибка все еще существует, поскольку я использовал ваш ответ, чтобы восстановить мои данные Wordpress на новый сервер (обратите внимание, что в ваших комментариях MySQL отсутствует окончание ';'. ;-)
Карл
12

Похоже, дамп вашей базы данных содержит информацию для создания базы данных. Поэтому не давайте командной строке MySQL имя базы данных. Он создаст новую базу данных и переключится на нее для импорта.

Пол Томблин
источник
4

Если вы создаете свою базу данных в прямом администраторе или cpanel, вы должны отредактировать свой sql с помощью блокнота или блокнота ++ и изменить CREATE DATABASEкоманду на CREATE DATABASE IF NOT EXISTSстроку 22

МайсаМ
источник
0

Я сам создаю базу данных из командной строки. Затем попробуйте импортировать еще раз, все работает.

wmlhust
источник