Büyük bir döküm dosyasını içe aktarmaya çalışırken “MySQL sunucusu kayboldu”


11

Bir MySQL döküm dosyasını almaya çalışıyorum.

Dosya bir Linux sunucusunda oluşturuldu, pencerelerden içe aktarmaya çalışıyorum

Komut satırına giriş yaptım ve koştum:

SOURCE c:/dump.sql

Ama bu bazı karakter seti problemleri atmış gibi görünüyor (özellikle akıllı tırnak işaretleri ve diğer standart olmayan noktalama işaretleri ile).

Bana koştuğum önerildi:

mysql -u username -d dbase < c:\dump.sql

Bunu denediğimde hatayı alıyorum

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Googling biraz bu max_allowed_packet anahtarı ile ilgisi olduğunu önerdi ama bunu denedim ve işe yaramadı. Bunun ne olabileceği hakkında bir fikri olan var mı?

Herkes karakter seti sorunu hakkında bir öneri varsa, bu da yararlı olacaktır.


Herhangi bir geri bildirim? [Yorum yapmak için 15 karakter gereklidir]
Mihai Limbăşan

Yanıtlar:


23

Soru başlığındaki hata mesajını okuduktan sonraki ilk içgüdüm, max_allowed_packet'in artırılmasını önermekti. "O anahtarı" denediğinizi ve bunun işe yaramadığını söylemiştiniz. Sunucunun yapılandırma dosyasını doğru bir şekilde değiştirdiğinizi onaylayabilir misiniz? İfadeniz, mysql.exe istemci komut satırında bir komut satırı anahtarı olarak kullanmaya çalıştığınız gibi ses çıkarır ve bu da sunucunun davranışını değiştirmesine neden olmaz.

Kısacası, yapmanız gereken, sunucunuzun şu anda kullanmakta olduğu my.cnf dosyasını bulmak ve düzenlemek. Bu [mysqld]bölümde max_allowed_packet ayarlarını aşağıdaki gibi değiştirin

[mysqld]
max_allowed_packet=32M

Yapılandırmayı değiştirdikten sonra sunucuyu yeniden başlatmayı unutmayın.

Örnek olarak 32M'yi (gülünç derecede büyük bir değer) kullandım. Sorgunuz muazzam gibi göründüğünden, çalışıp çalışmadığını görmek için bu değeri (veya belki de yeterli RAM'iniz varsa 64M'yi) denemelisiniz.

Başka bir seçenek de sunucuyu olduğu gibi bırakmak ve SQL dökümünü oluşturmak için kullanılan istemcinin davranışını değiştirmektir. Tek tek sorguların boyutunu 1 MB'ın altında sınırlandırmasını söyleyin - bu da hile yapmalıdır.

Daha fazla ayrıntı için bkz. B.1.2.10. Paket MySQL kılavuzunda çok büyük .


1
Evet sadece komut satırı anahtarını deniyordum. Bir etkisi olduğunu düşündüğüm nedeni, daha küçük bir şeye ayarladığımda maksimum izin verilen bir paketi çok küçük bir hata verdiğiydi. Önerinizi Pazartesi günü deneyeceğim. Teşekkürler
Jeremy French

Rica ederim - bunun işe yarayacağından neredeyse eminim. Ne yazık ki, son 50 yıl içinde yazılmış birçok (tamam, çoğu) diğer yazılımda olduğu gibi, MySQL'in hata mesajları, geliştiricinin zihninin çalışma biçimine zaten aşina değilseniz emmek ve yanıltıcı olma eğilimindedir :).
Mihai Limbăşan

Bunu duyduğuma sevindim - iyi eğlenceler.
Mihai Limbăşan

Çok çok harika. Aynı sorunu yaşadım, soruyu sormaya geldim ve bam! çözüldü. @Mihai - ne alırsanız ödeyin; yeterli değil :)
Steven Evers

Bu çözüm, MySQL'imizi localhost'tan uzak bir sunucuya taşıdıktan sonra bu hatayı aldığımızda bize yardımcı oldu. Çok teşekkür ederim!
Lea Cohen

1

MySQL 5.7.24'te, MySQL 5.6'dan gelen eski yapılandırma nedeniyle

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

SQL sürümü 5.7.5 veya üstü ise aşağıdaki seçenek zorunludur.

sql_mode=TRADITIONAL

Ayrıca /etc/my.cnf dosyasında iki adet max_allowed_packet parametresi vardır, diğeri mysqldump içindir. Lütfen aynısını not edin.

max_allowed_packet = <1G>

Kurulumum CentOS7'de.


0

Windows sunucusundaki MySQL örneğine linux kutusundan erişebiliyor musunuz?

Öyleyse, linux kutusundaki komutu , windows kutusundaki sunucuya bağlanmak için -h anahtarı ile çalıştırabilir misiniz ?

mysql -u username -d dbase -h <windows host> < dump.sql

Bu karakter set sorunları çözebilir Eğer ithalat yapmak orijinal kutusunda Linux istemcisi kullanıyorsanız beri. (sadece bir tahmin)


0

MySQL günlüğü ne diyor?

Bazen sunucuda düzeltilemez bir hata varsa bu hata istemcide bildirilir. Bu, veritabanı tablolarının diskteki bozulmasının bir göstergesi olabilir.


-1

Hesabınızın bir şifresi var mı? Belki de -p anahtarını eklemeniz gerekir:

mysql -u username -p -d dbase < c:\dump.sql

Oh - muhtemelen değil, çünkü ithalatta bir yol başarısız olmuş gibi görünüyor.
Brent
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.