mengimpor file SQL besar phpmyadmin

12

Saya mencoba mengimpor file SQL ini di phpmyadmin dan mendapatkan pesan ini

#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

Apa yang harus saya lakukan untuk melakukan impor ini?

berikan penjahit
sumber

Jawaban:

12

Dengan asumsi Anda tidak dapat lebih meningkatkan ukuran memori maka ada beberapa opsi.

  • Jika Anda tidak terbiasa dengan baris perintah dan Anda benar-benar ingin tetap dengan impor gaya GUI maka Anda dapat menggunakan BigDump ( http://www.ozerov.de/bigdump/ ). Saya menggunakannya sekali tapi sudah lama. Dari apa yang saya ingat Anda akan mengunduh file bernama bigdump.php (dengan beberapa instruksi) dan meletakkannya di server Anda di direktori dengan file dump DB DB yang terlalu besar untuk diimpor melalui PHPMYADMIN. Kemudian arahkan ke sana menggunakan browser Anda - sesuatu seperti http://nama -anda situs.com/bigdump.php .

  • Jika Anda terbiasa dengan baris perintah dan menggunakan sistem berbasis Linux maka Anda dapat menggunakan kode seperti ini:

    mysql -u USERNAME -p DATABASENAME <FILENAME.sql

Database dan pengguna (dengan hak istimewa untuk database) perlu ada sebelum menjalankan perintah ini. Catatan saya menyalin perintah di atas dari sumber lain. Saya selalu melakukan dump dan mengembalikan seperti ini: 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

  • Akhirnya, dan yang paling menyakitkan, Anda dapat memilih untuk membuang masing-masing tabel atau kelompok tabel ke dalam dump yang cukup kecil. Kemudian kembalikan dump individual ini satu per satu melalui PHPMYADMIN.

Petunjuk FTP & RESTORE:

Unduh FileZilla di sini: http://filezilla-project.org/download.php?type=client

Biasanya Anda dapat FTP ke server Anda (terutama host bersama) menggunakan login dan kata sandi yang sama seperti yang Anda lakukan untuk SSH (Anda login perintah baris). Pastikan untuk mengatur koneksi ke server Anda dengan benar di FileZilla.

Setelah terhubung jalur default Anda kemungkinan akan menjadi folder $ HOME Anda (pada mesin nix). Jika Anda tidak berencana melakukan banyak FTP, buang saja yang Anda inginkan di sana. Anda selalu dapat memindahkannya dari baris perintah.

Jika Anda meng-FTP Dump MySQL ke folder $ HOME Anda, maka perintah RESTORE untuk DB bernama mydb dan file dump db bernama mydb.sql.gz (dalam folder $ HOME) adalah:

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

di mana Anda jelas perlu mengubah nilai DB_USER dan DB_PASSWORD menjadi pengguna dan kata sandi yang Anda siapkan untuk DB.

Ingat:

  • DB harus sudah ada (tetapi kosong) sebelum perintah RESTORE dijalankan
  • DB_USER dan DB_PASSWORD harus disiapkan untuk DB sebelum perintah RESTORE (Anda dapat melakukan ini dari PHPMYADMIN - tab Privileges)
  • Ketika Anda mengatur DB_USER dari PHPMYADMIN, ia hanya akan mengizinkan DB_USER untuk mengakses DB dari localhost (server tempat DB di-host). Saya berasumsi ini bagus untuk situasi Anda. Ketika Anda masuk ke DUMP dan RESTORE yang lebih maju, Anda mungkin ingin melakukannya dari mesin lain sepenuhnya yang tidak sulit tetapi membutuhkan beberapa informasi tambahan disediakan dan DB_USER dengan hak istimewa yang tepat.

FTP DB dan Kembalikan itu ... Langkah demi langkah

  1. Temukan zip file dump MySQL di desktop Anda (Contoh: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. Unduh dan instal FileZilla
  3. Di FileZilla pergi ke File-> Site Manager dan klik tombol Situs Baru (kuadran kiri bawah GUI). Tetapkan host ke domain (Contoh: dest.com) yang ada di server DESTINASI Anda. Setel Protokol ke FTP atau SFTP (ini tergantung pada hosting Anda, tanyakan pada mereka). Tetapkan Pengguna dan Kata Sandi (Contoh: Pengguna = hibah, Kata Sandi = kata sandi hibah) - jika protokol FTP adalah SFTP maka setiap rangkaian kredensial masuk SSH yang valid harus berfungsi.
  4. (Dalam FileZilla) Klik Sambungkan (tombol paling kiri bawah)
  5. (Di FileZilla) Setelah tersambung ke server jarak jauh (harus menjadi server DESTINASI Anda) gunakan sisi kiri FileZilla untuk menavigasi ke direktori tempat file dump yang Anda temukan di Langkah 1 berada. (Jalur untuk mesin lokal ada di paling kiri, sekitar setengah jalan ke bawah dan diberi label situs Lokal :. Dalam contoh kami, kotak teks di sebelah Situs lokal: akan membaca C: \ Web \ DB \ Dumps.)
  6. (Dalam FileZilla) Temukan situs Remote: beri label langsung di sebelah kanan Situs Lokal :.
  7. (Dalam FileZilla) Tidak ada alasan teknis Anda tidak dapat memasukkan DUMP DB ke dalam folder yang dibuka oleh FileZilla. Kemungkinan akan default ke direktori $ HOME Anda. Jika Anda tidak memiliki alasan untuk meletakkan DB Dump di direktori tertentu - seperti untuk tujuan organisasi Anda sendiri - maka tinggalkan jalur di situs Remote sendirian. Tuliskan path itu (Contoh Linux: / usr / grant).
  8. (Di FileZilla) Temukan file di mesin lokal Anda di sebelah kiri FileZilla tepat di bawah Pohon yang ditunjukkan di bawah situs Lokal: label yang Anda temukan di Langkah 5. Klik dua kali pada file itu dan FileZilla akan mengirimkannya ke Situs Remote Anda.
  9. Di dalam PHPMYADMIN di server DESTINATION Anda, buat database baru (ketik mydb di kotak teks Buat database baru dan Klik tombol Buat).
  10. (Dalam PHPMYADMIN) Pilih mydb dari menu di sebelah kiri.
  11. (Dalam PHPMYADMIN) Klik pada tab Privileges (kanan atas). Setelah di halaman itu klik Tambah Pengguna Baru.
  12. (Dalam PHPMYADMIN-> Privileges-> Tambah Pengguna Baru) Berikan nama pengguna (Contoh: mydb_grant) dan kata sandi (Contoh: mydb_password). Di dropdown Host, pilih Lokal. Pastikan bahwa tombol radio di sebelah "Berikan semua hak istimewa pada basis data" dipilih. Kemudian klik Go (kanan bawah layar).
  13. SSH ke server DESTINASI Anda.
  14. (Di terminal SSH Anda) Arahkan ke direktori yang Anda tulis di Langkah 7. Menggunakan perintah like - cd $HOMEatau cd /usr/grant. (Pada mesin Linux $ HOME adalah variabel lingkungan yang akan sama dengan sesuatu seperti / usr / grant.)
  15. (Di terminal SSH Anda) Jalankan perintah berikut: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(tidak ada ruang antara -p dan kata sandi karena itu adalah cara yang diperlukan, itu bukan salah ketik).

Setelah perintah terakhir selesai, DB Anda telah DIPULIHKAN. Saya tidak menyarankan menggunakan pengguna DB dan kata sandi yang saya berikan cukup ganti saja dengan pilihan Anda sendiri yang lebih aman.

DUMP dan KEMBALIKAN kembali pada server yang berbeda tanpa FTP

Jika Anda ingin melewatkan hal-hal FTP dan tidak keberatan mengulang DUMP maka Anda dapat melakukannya dengan cara ini:

  1. Masuk ke server DESTINATION (tempat Anda menginginkan DB berada - kami akan menyebutnya destination.com)
  2. Buat DB, Pengguna, dan hak istimewa sebagaimana disebutkan di atas pada server DESTINASI
  3. Pastikan hak istimewa di server SOURCE memungkinkan SOURCE_DB_USER untuk mengakses DB dari jarak jauh - baik memungkinkan akses dari dest.com atau dari% (% - semua orang dan di mana saja jika mereka memiliki nama pengguna dan kata sandi yang tepat)
  4. Pada server DESTINATION dijalankan: di mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzmana source.com adalah server SUMBER (tempat DB saat ini berada)
  5. Kemudian (di server DESTINASI) jalankan: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Hanya itu yang harus Anda lakukan untuk memindahkan DB dari satu server ke yang lain. Peringatan adalah bahwa saya hanya pernah melakukan ini pada Ubuntu khusus saya sendiri (dengan LAMP standar) dan server VPS Dreamhost (yang saya percaya menjalankan CentOS tapi saya bisa saja salah).


sumber
3

Kamu bisa:

  • meningkat memory_limit
  • meningkat post_max_size
  • meningkat max_execution_time
  • harus me-restart Apache setelah melakukan semua ini.
  • atau gunakan Big Dump
Salman
sumber
1

Apakah file SQL Anda dikompresi? Saya punya masalah dengan file zip zip 6MB. Saya mendekompresnya menjadi file sql 53MB terkompresi dan berhasil. Proses unzip file dump saat ini harus memakan semua memori.

Jeremy
sumber
0

jika Anda memiliki akses ssh ke server dengan mysql, daripada Anda dapat menempatkan file dengan dump mysql di beberapa tempat, masukkan konsol mysql:

mysql -u myUser myDatabase

Atau jika server mysql berada di tempat selain localhost dan memungkinkan koneksi tidak hanya dari localhost daripada:

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

Daripada Anda akan diminta kata sandi untuk pengguna mysql Anda. Sekarang Anda di konsol mysql. Di sini Anda bisa mengetik

source ~/mydump.sql;

Anda akan melihat bagaimana perintah dari dump Anda akan dieksekusi.

Dalam metode ini Anda tidak peduli tentang batas memori php.


sumber
0

jika ukuran basis data Anda lebih dari 128 MB maka pisahkan basis data Anda menjadi beberapa bagian.

Gunakan perangkat lunak SQL Dump Splitter

SQL Dump Splitter adalah aplikasi 430 KB yang memberikan kendali penuh atas pemisahan database besar menjadi file SQL yang lebih kecil dengan mudah. Dengan SQL Dump Splitter Anda dapat:

  • Pilih ukuran setiap potongan
  • Memilih untuk melewati komentar (bahkan mengurangi ukuran DB)
  • Mengotomatiskan aktivitas.

sumber
bagaimana Anda mengotomatiskan aktivitas? Saya menggunakan splitter dan saya tidak tahu cara kerjanya ... ia menyelesaikan split tanpa memberi tahu saya potongan apa yang digunakan untuk membagi file dan sekarang tidak ada bantuan atau FAQ untuk membantu menggunakannya.