SQL dökümünü MySQL'e aktarırken hata oluştu: Bilinmeyen veritabanı / Veritabanı oluşturulamıyor


84

SQL döküm dosyasını nasıl içe aktaracağım konusunda kafam karıştı. Veritabanını ilk önce MySQL'de oluşturmadan veritabanını içe aktaramıyorum.

Bu, database_namehenüz oluşturulmadığında görüntülenen hatadır :

username= orijinal sunucudaki veritabanına erişimi olan birinin kullanıcı adı.
database_name= orijinal sunucudaki veritabanının adı

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

MySQL'de root olarak oturum açarsam ve veritabanını oluşturursam, 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

sonra sql dökümünü tekrar içe aktarmayı deneyin:

$ 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 döküm dosyasını nasıl içe aktarabilirim?

Yanıtlar:


39

Sql dosyasını açın ve mevcut veritabanını oluşturmaya çalışan satırı yorumlayın.


8
@BryanWheelock Daha iyi (sanayileştirilebilir) bir seçeneğin komutunuzdaki veritabanını seçmemek olacağını düşünüyorum, bu yüzden şu hale geliyor: "mysql -u kullanıcı adı -p -h localhost <dumpfile.sql". Veritabanı_adı isteğe bağlı bir parametredir. Döküm dosyanız bir "veritabanı oluştur" talimatı içeriyorsa, o zaman oluşturulacaktır.
toni07

Bunu biraz daha detaylandırmak gerekirse, * .sql dosyamdaki ilk satırda şunlar vardı: CREATE DATABASE EĞER MEVCUT DEĞİLSE `veritabanı_adı` / *! 40100 VARSAYILAN KARAKTER SETİ latin1 * /; Bunu (not / * başlangıçta) olarak değiştirme: / * VERİ TABANI OLMADIĞINDA `veritabanı_adı` / *! 40100 VARSAYILAN KARAKTER SETİ latin1 * /; etkili bir şekilde komuta yorum ve IMPORT çalışması gerekir. İTHALAT'ın tabloları eklemesini istediğiniz veritabanında aktif olmayı unutmayın, aksi takdirde karışıklık yaşayabilirsiniz!
ntk4

49

Bu, MySQL'de bilinen bir hatadır .

hata 42996
hata 40477

Gördüğünüz gibi bu 2008'den beri bilinen bir sorundur ve henüz çözülmedi !!!

ÇÖZÜM
Öncelikle içe aktarmak için veritabanını oluşturmanız gerekir. Masaya ihtiyaç duymaz. Ardından veritabanınızı içe aktarabilirsiniz.

  1. ilk önce MySQL komut satırınızı başlatın (gerekirse kullanıcı adı ve şifreyi uygulayın)
    C:\>mysql -u user -p

  2. Veritabanınızı oluşturun ve çıkın

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Seçtiğiniz veritabanını döküm dosyasından içe aktarın
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Localhost'u, içe aktarmak istediğiniz herhangi bir MySQL sunucusu için bir IP veya etki alanıyla değiştirebilirsiniz. Mysql komut istemindeki DROP komutunun nedeni, boş ve temiz bir veritabanıyla başladığımızdan emin olmaktır.


2
Cevabı takdir ediyorum. Şimdi 2012 ve görünen o ki, cevabınızı wordpress databe'mi yeni bir sunucuya geri yüklemek için kullandım (ancak MySQL önerilerinizin sonunun eksik olduğunu unutmayın ';'. ;-)
Karl

12

Veritabanı dökümünüzün veritabanı oluşturma bilgilerini içerdiği anlaşılıyor. Bu yüzden MySQL komut satırına bir veritabanı adı vermeyin. Yeni veritabanını oluşturacak ve içe aktarmayı yapmak için ona geçiş yapacaktır.


4

Veritabanınızı doğrudan yönetici veya cpanel'de CREATE DATABASEoluşturuyorsanız CREATE DATABASE IF NOT EXISTS, sql'nizi notepad veya notepad ++ ile düzenlemeli ve komutu satır22'de değiştirmelisiniz .


0

Veritabanını komut satırını kullanarak kendim oluşturuyorum. Sonra tekrar içe aktarmayı deneyin, işe yarıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.