phpmyadmin büyük SQL dosyasını içe aktarma


12

Ben phpmyadmin bu SQL dosyasını almaya çalışıyorum ve bu mesajı aldım

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1

Bu içe aktarmayı yapmak için ne yapmalıyım?

Yanıtlar:


12

Bellek boyutunu daha fazla arttıramayacağınızı varsayarsak, birkaç seçenek vardır.

  • Komut satırına aşina değilseniz ve gerçekten bir GUI stili içe aktarmaya bağlı kalmak istiyorsanız, BigDump'ı kullanabilirsiniz ( http://www.ozerov.de/bigdump/ ). Bir kez kullandım ama bir süre oldu. Hatırladığım kadarıyla (bazı talimatlarla) bigdump.php adlı bir dosyayı indirecek ve PHPMYADMIN üzerinden içe aktarmak için çok büyük olan MySQL DB dökümü dosyasıyla dizine web sunucunuza koyacaksınız. Ardından tarayıcınızı kullanarak http://your-website.com/bigdump.php gibi bir şeye gidin .

  • Komut satırını biliyorsanız ve Linux tabanlı bir sistem kullanıyorsanız, aşağıdaki gibi bir kod kullanabilirsiniz:

    mysql -u KULLANICI ADI -p DATABASENAME <FILENAME.sql

Veritabanı ve kullanıcının (veritabanına ayrıcalıkları olan) bu komutu çalıştırmadan önce var olması gerekir. Not Yukarıdaki komutu başka bir kaynaktan kopyaladım. Her zaman dökümlerimi geri yüklerim ve geri yüklerim: DUMP: mysqldump -u DB_USER -h DB_HOST -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz RESTORE:gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Son olarak ve en acı verici şekilde, tek tek masaları veya masa gruplarını yeterince küçük çöplüklere dökmeyi seçebilirsiniz. Daha sonra PHPMYADMIN aracılığıyla bu ayrı ayrı dökümleri teker teker geri yükleyin.

FTP ve RESTORE talimatları:

FileZilla'yı buradan indirin: http://filezilla-project.org/download.php?type=client

Genellikle sunucunuza (özellikle paylaşılan bir ana bilgisayar), SSH için kullandığınız aynı giriş ve şifreyi kullanarak komut verebilirsiniz (komut satırına giriş yaparsınız). Sadece FileZilla'da sunucunuzla olan bağlantıyı doğru bir şekilde kurduğunuzdan emin olun.

Bağlandıktan sonra varsayılan yolunuz büyük olasılıkla $ HOME klasörünüz olacaktır (nix makinelerde). Çok fazla FTP yapmayı planlamıyorsanız, sadece orada ne istediğinizi boşaltın. Her zaman komut satırından taşıyabilirsiniz.

$ HOME klasörünüze bir MySQL Dökümü FTP gönderirseniz, mydb adlı bir DB ve mydb.sql.gz ($ HOME klasöründe) adlı bir db döküm dosyası için RESTORE komutu şöyle olur:

gunzip < $HOME/mydb.sql.gz | mysql -u DB_USER -pDB_PASSWORD mydb

DB_USER ve DB_PASSWORD değerlerini DB için ayarladığınız kullanıcı ve parola ile değiştirmeniz gerektiği açıktır.

Hatırlamak:

  • RESTORE komutu yürütülmeden önce DB zaten var olmalıdır (ancak boş olmalıdır)
  • DB_USER ve DB_PASSWORD, RESTORE komutundan önce DB için ayarlanmalıdır (bunu PHPMYADMIN - Ayrıcalıklar sekmesinden yapabilirsiniz)
  • DB_USER'ı PHPMYADMIN'den kurduğunuzda, varsayılan olarak yalnızca DB_USER'in DB'ye yerel ana bilgisayardan (DB'nin barındırıldığı sunucu) erişmesine izin verilir. Durum hibeniz için bunun iyi olduğunu varsayıyorum. Daha gelişmiş DUMP'lara ve RESTORE'lara girdiğinizde, tamamen zor olmayan ancak birkaç bilgi daha sağlanmasını ve uygun ayrıcalıklara sahip DB_USER gerektiren başka bir makineden yapmak isteyebilirsiniz.

DB FTP ve RESTORE it ... Adım Adım

  1. Masaüstünüzde sıkıştırılmış MySQL döküm dosyasını bulun (Örnek: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. FileZilla'yı indirin ve yükleyin
  3. FileZilla'da Dosya-> Site Yöneticisi'ne gidin ve Yeni Site düğmesine tıklayın (GUI'nin sol alt çeyreği). Ana bilgisayarı DESTINATION sunucunuzda bulunan bir etki alanına (Örnek: dest.com) ayarlayın. Protokolü FTP veya SFTP olarak ayarlayın (bu hostinginize bağlıdır, isteyin). Kullanıcı ve Parolayı ayarlayın (Örnek: Kullanıcı = grant, Parola = hibe parolası) - FTP protokolü SFTP ise, geçerli SSH oturum açma kimlik bilgileri kümesi çalışmalıdır.
  4. (FileZilla'da) Bağlan'a tıklayın (en sol alt düğme)
  5. (FileZilla'da) Uzak sunucuya bağlandıktan sonra (DESTINATION sunucunuz olmalıdır) 1. Adımda bulduğunuz döküm dosyasının bulunduğu dizine gitmek için FileZilla'nın sol tarafını kullanın. (Yerel makinenin yolu en solda, yaklaşık yarım aşağıdadır ve Yerel site: olarak etiketlenmiştir. Örneğimizde Yerel site: öğesinin yanındaki metin kutusunda C: \ Web \ DB \ Dumps okunacaktır.)
  6. (FileZilla'da) Uzak site: etiketini doğrudan Yerel Site: öğesinin sağında bulun.
  7. (FileZilla'da) DB DUMP'u FileZilla'nın açtığı klasöre yerleştirememenizin teknik bir nedeni yoktur. Büyük olasılıkla $ HOME dizininiz varsayılan olacaktır. DB Dökümünü belirli bir dizine (kendi kuruluş amaçlarınız gibi) koymak için herhangi bir nedeniniz yoksa, yolu Uzak sitedeki tek başına bırakın. Bu yolu yazın (Linux Örnek: / usr / grant).
  8. (FileZilla'da) Yerel makinenizde FileZilla'nın sol yarısında, Yerel sitenin altında gösterilen Ağacın hemen altında bulunan dosyayı bulun: 5. Adımda bulduğunuz etiketin üzerine tıklayın. FileZilla dosyayı Uzak Sitenize FTP olarak gönderir.
  9. DESTINATION sunucunuzdaki PHPMYADMIN içinde yeni bir veritabanı oluşturun (Yeni veritabanı oluştur metin kutusuna mydb yazın ve Oluştur düğmesine tıklayın).
  10. (PHPMYADMIN'de) Soldaki menüden mydb'yi seçin.
  11. (PHPMYADMIN'de) Ayrıcalıklar sekmesine tıklayın (sağ üst). Bu sayfada bir kez Yeni Kullanıcı Ekle'yi tıklayın.
  12. (PHPMYADMIN-> Ayrıcalıklar-> Yeni Kullanıcı Ekle'de) Bir kullanıcı adı (Örnek: mydb_grant) ve şifre (Örnek: mydb_password) girin. Ana Bilgisayar açılır menüsünde Yerel'i seçin. "Veritabanındaki tüm ayrıcalıkları ver" in yanındaki radyo düğmesinin seçili olduğundan emin olun. Ardından Git'i (ekranın sağ alt köşesi) tıklayın.
  13. SSH, DESTINATION sunucunuza.
  14. (SSH terminalinizde) Adım 7'de yazdığınız dizine gidin . - cd $HOMEveya gibi bir komut kullanarak cd /usr/grant. (Linux makinelerinde $ HOME, / usr / grant gibi bir şeye eşit olacak bir ortam değişkenidir.)
  15. (SSH terminalinizde) Aşağıdaki komutu yürütün: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(-p ve parola arasında boşluk yoktur, çünkü olması gerektiği gibi, yazım hatası değildir).

Bu son komut tamamlandığında DB'niz RESTORED edildi. Sağladığım DB kullanıcı ve parolasını kullanmanızı ve bunları daha güvenli seçeneklerle değiştirmenizi önermiyorum.

FTP olmadan farklı sunucularda DUMP ve RESTORE

FTP öğelerini atlamak ve DÖKÜMÜ yeniden yapmayı düşünmüyorsanız, bunu şu şekilde yapabilirsiniz:

  1. DESTINATION sunucusuna giriş yapın (DB'nin oturmasını istediğiniz yer - biz hedef.com olarak adlandıracağız)
  2. DESTINATION sunucusunda yukarıda belirtildiği gibi DB, Kullanıcı ve uygun ayrıcalıkları oluşturun
  3. SOURCE sunucusundaki ayrıcalıkların SOURCE_DB_USER ürününün DB'ye uzaktan erişmesine izin verdiğinden emin olun - dest.com'dan veya% (% - doğru kullanıcı adı ve parolaları varsa herkes ve her yerden) erişime izin verin
  4. DESTINATION sunucusunda şunu çalıştırın: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzBurada source.com, SOURCE sunucusudur (DB'nin şu anda bulunduğu yer)
  5. Sonra (DESTINATION sunucusunda) şunu çalıştırın: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

DB'yi bir sunucudan diğerine taşımak için tek yapmanız gereken bu olmalıdır. Uyarılar şimdiye kadar sadece kendi özel Ubuntu (standart LAMP ile) ve Dreamhost'ın VPS sunucuları (CentOS çalıştırmak inanıyorum ama yanlış olabilir) yaptım olmasıdır.


3

Yapabilirsin:

  • artırmak memory_limit
  • artırmak post_max_size
  • artırmak max_execution_time
  • tüm bunları yaptıktan sonra Apache'yi yeniden başlatmanız gerekir.
  • veya Büyük Dökümü kullanın

1

SQL dosyanız sıkıştırılmış mı? Ben 6MB sıkıştırılmış sql dosyası ile bu sorunu vardı. Ben 53MB sıkıştırılmamış sql dosyasına sıkıştırılmış ve işe yaradı. İşlemdeki döküm dosyasının sıkıştırılmamış olması tüm belleği doldurmalıdır.


0

mysql ile sunucuya ssh erişiminiz varsa, mysql dökümü olan bir yere dosya yerleştirebileceğinizden mysql konsolunu girin:

mysql -u myUser myDatabase

Veya mysql sunucusu localhost yerine başka bir yerdeyse ve yalnızca localhost ile olmayan bağlantılara izin veriyorsa:

mysql -u myUser -h mysql.example.com myDatabase

Bundan sonra mysql kullanıcı şifreniz istenecektir. Şimdi mysql konsolundasınız. Buraya yazabilirsiniz

source ~/mydump.sql;

Dökümünüzden komutların nasıl yürütüleceğini göreceksiniz.

Bu yöntemde herhangi bir php bellek sınırlaması umurumda değil.


0

veritabanı boyutunuz 128 MB'den büyükse, veritabanınızı parçalara ayırın.

Kullanım SQL Döküm Splitter yazılımı

SQL Dump Splitter, büyük veritabanlarını kolaylıkla daha küçük SQL dosyalarına bölme üzerinde tam kontrol sağlayan 430 KB'lık bir uygulamadır. SQL Döküm Ayırıcı ile şunları yapabilirsiniz:

  • Her bir parçanın boyutunu seçin
  • Yorumları atlamayı seçin (DB'nin boyutunu azaltmak için bile)
  • Etkinliği otomatikleştirin.

etkinliği nasıl otomatikleştiriyorsunuz? Bölücüyü kullanıyorum ve nasıl çalıştığına dair hiçbir fikrim yok ... dosyayı hangi parçalara bölündüğünü söylemeden bölünmeyi tamamladı ve şimdi yardım etmek için yardım veya SSS kullanmayın.
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.