Saya mencoba mengimpor file dump MySQL, yang saya dapatkan dari perusahaan hosting saya, ke mesin Windows dev saya, dan saya mengalami masalah.
Saya mengimpor ini dari baris perintah, dan saya mendapatkan kesalahan yang sangat aneh:
ERROR 2005 (HY000) pada baris 3118: Host server MySQL tidak dikenal '╖? * Á ± dÆ╦N╪Æ · h ^ ye "π╩i╪ Z + - $ ▼ ₧ ╬Y.∞┌ | ↕╘l∞ / l ╞⌂î7æ▌X█XE.ºΓ [; ╦ï ♣ éµ♂º╜┤║] .♂┐φ9dë╟█'╕ÿG∟═0à¡úè ♦ ╥ ↑ ù ♣ ♦ ¥ '╔NÑ' (11004)
Saya melampirkan tangkapan layar karena saya berasumsi data biner akan hilang ...
Saya tidak yakin apa masalahnya, tetapi dua masalah potensial adalah ukuran file (2 Gb) yang tidak terlalu besar, tetapi juga tidak kecil, dan yang lainnya adalah fakta bahwa banyak dari tabel ini memiliki Gambar JPG di dalamnya (itulah sebabnya file berukuran 2Gb besar, untuk sebagian besar).
Juga, dump diambil di mesin Linux dan saya mengimpor ini ke Windows, tidak yakin apakah itu dapat menambah masalah (saya mengerti seharusnya tidak)
Sekarang, sampah biner itu sebabnya saya pikir gambar dalam file mungkin menjadi masalah, tetapi saya sudah bisa mengimpor dump serupa dari perusahaan hosting yang sama di masa lalu, jadi saya tidak yakin apa masalahnya.
Juga, mencoba untuk melihat file ini (dan baris 3118 khususnya) agak tidak mungkin mengingat ukurannya (saya tidak benar-benar berguna dengan alat baris perintah Linux seperti grep, sed, dll).
File mungkin rusak, tetapi saya tidak yakin bagaimana cara memeriksanya. Apa yang saya unduh adalah file .gz, yang saya "uji" dengan WinRar dan katanya terlihat OK (saya anggap gz memiliki semacam CRC). Jika Anda dapat memikirkan cara yang lebih baik untuk mengujinya, saya ingin mencobanya.
Ada ide apa yang bisa terjadi / bagaimana cara mengatasi kesalahan ini?
Saya tidak terlalu terikat dengan data pada khususnya, karena saya hanya ingin ini sebagai salinan untuk dev, jadi jika saya harus kehilangan beberapa catatan, saya baik-baik saja dengan itu, selama skema tetap sehat.
Terima kasih!
Daniel
Anda tidak perlu menggunakan opsi --hex-blob. Saya baru saja menyelesaikan masalah ini sendiri dan masalahnya adalah bahwa saya perlu --max_allowed_packet disetel ke nilai yang cukup besar untuk mengakomodasi gumpalan data terbesar yang akan saya muat. Perintah restore Anda akan terlihat seperti:
Jika Anda menggunakan opsi --hex-blob, Anda akan secara signifikan meningkatkan ukuran cadangan Anda - dengan faktor 2 atau lebih. CATATAN: untuk mengembalikan data yang sama dengan yang saya kembalikan dengan perintah di atas diperlukan pengaturan --max_allowed_packet = 64M di my.ini (cnf) dan memulai kembali server SEBAGAIMANA ADA untuk 64M pada baris perintah untuk mengembalikan dump yang dibuat dengan opsi --hex-blob.
sumber
Mungkin masih ada masalah karena ukuran file yang besar jadi pastikan Anda mengatur paket max-allowed-packet ke nilai tinggi (param untuk perintah mysql).
sumber
Oke, saya punya masalah hari ini. Tetapi masalah saya adalah bahwa database sudah jatuh ketika saya menyadari bahwa cadangan rusak. Jadi, tidak
--hex-blob
untukku! Untuk dapat memperbaikinya saya membuat skrip kecil dalam PHP yang mengubah "string biner" menjadi representasi hex di mana nilai-nilai diwakili seperti"_binary '!@{#!@{#'"
...Ini menggunakan REGEX untuk mem-parsing SQL, yang tidak sepenuhnya aman, tapi itu berhasil bagi saya.
Saya berharap itu menyelamatkan seseorang sakit kepala yang saya dapatkan!
sumber
Saya memiliki masalah serupa ketika mengembalikan file dump dari server Linux yang berisi data biner. Kesalahannya adalah sesuatu seperti
ERROR 1064 (42000) at line 551: You have an error in your SQL syntax;
File dump ini dapat berhasil diimpor ke server Linux tetapi tidak ke Windows.
Saya telah mencoba dengan
--hex-blob
opsi dan--max_allowed_packet
dan bahkan mentransfer data dengan pipa daripada file .sql, tetapi tidak berhasil.Saya akhirnya menyelesaikan ini dengan menggunakan MySQL Workbench, dan perintah yang dihasilkan seperti
Kemudian saya mencoba dengan
--default-character-set=utf8
dari baris perintah dan itu berhasil. Semoga ini bisa membantu seseorang.sumber