Помилка імпорту дампа 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 як адміністратор і створу базу даних, 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 і прокоментуйте рядок, який намагається створити існуючу базу даних.


8
@BryanWheelock Я думаю, що кращим (індустріалізованим) варіантом було б не вибирати базу даних у вашій команді, тому вона стає: "mysql -u username -p -h localhost <dumpfile.sql". Ім'я_бази даних - необов'язковий параметр. Якщо ваш файл дампа містить інструкцію "створити базу даних", він буде створений.
toni07

Тільки для детального вивчення цього, у самому першому рядку мого файлу * .sql було таке: СТВОРИТИ БАЗУ ДАНИХ, ЯКЩО НЕ ІСНУЄ `ім'я_бази даних` / *! 40100 ЗАВДАННЯ НАБОРУ ХАРАКТЕРІВ latin1 * /; Змінюючи це на (примітка / * на початку): / * СТВОРИТИ БАЗУ ДАНИХ, ЯКЩО НЕ ІСНУЄ `ім'я_бази даних` / *! 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 EXISTSline22


0

Я сам створюю базу даних за допомогою командного рядка. Потім спробуйте імпортувати ще раз, це працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.