Got a Packet Bigger Than max_allowed_packet Hatası Nasıl Çözülür (MySQL)

Son gözden geçirme: Ekim 2026 · MariaDB 10.11 sistem değişkenleri ve phpMyAdmin resmî belgelerine göre

Hızlı çözüm

Max allowed packet hatası (Got a packet bigger than 'max_allowed_packet' bytes), veritabanına gönderilen tek bir sorgu ya da satırın sunucunun kabul ettiği en büyük paket boyutunu aştığını gösterir. Çoğu zaman büyük bir yedeği içe aktarırken çıkar.

  1. Paylaşımlı hostingte yedeği tek satırlık INSERT’lerle yeniden alın ya da dosyayı parçalara bölün.
  2. Hatayı veren tablo ve satır boyutunu not edip destek talebi açın; sunucu değeri hesabınızdan değiştirilemez.
  3. VPS’te max_allowed_packet değerini MariaDB yapılandırma dosyasında büyütüp hizmeti yeniden başlatın.
  4. Komut satırından içe aktarıyorsanız istemciye de --max-allowed-packet verin.
Panel cPanel (phpMyAdmin); VPS’te komut satırı
Sistem Paylaşımlı hosting (MariaDB 10.11); Ubuntu 24.04 ve AlmaLinux 9 VPS
Yetki cPanel kullanıcısı; VPS’te root ya da sudo
Narhost ürünü VPS Sunucu, Web Hosting

Başlamadan önce

  • Hata metnini ve hatanın hangi işlemde çıktığını (içe aktarma, eklenti, uygulama) not edin.
  • İçe aktaracağınız dosyanın boyutunu ve en büyük tabloyu öğrenin.
  • VPS’te yapılandırma dosyasını değiştirmeden önce bir kopyasını alın.

Max allowed packet hatası neden olur

MariaDB ve MySQL, istemciyle sunucu arasındaki her mesajı paketlerle taşır. MariaDB belgesine göre max_allowed_packet tek bir paketin ya da ara sonucun alabileceği en büyük boyuttur; varsayılan değer sunucuda 16 MB, istemcide 1 GB’tır ve değer en çok 1 GB’a çıkarılabilir. Bir sorgu bu sınırı aşınca sunucu bağlantıyı keser ve max allowed packet hatası döner.

En sık nedenler: binlerce satırı tek bir INSERT cümlesinde toplayan büyük yedek dosyaları, veritabanında saklanan görsel ya da dosyalar (BLOB), çok uzun ayar kayıtları tutan eklentiler ve tek seferde büyük veri gönderen uygulama kodu. Aynı sorun bazen MySQL server has gone away iletisiyle de görünür.

max allowed packet hatası çözüm şeması — sorguyu küçültme, dosyayı bölme ve VPS'te değeri büyütme
Paylaşımlı hostingte sorgu küçültülür; değer yalnız VPS'te değiştirilir.

Paylaşımlı hostingte adım adım çözüm

Paylaşımlı sunucuda max_allowed_packet bütün hesaplar için ortak ayarlanır ve oturum değeri salt okunurdur; hesabınızdan değiştirilemez. Çözüm, sorguları sınıra sığacak hâle getirmektir.

  1. Yedeği küçük sorgularla yeniden alın. Yedeği aldığınız sunucuya komut satırıyla erişebiliyorsanız her satırı ayrı INSERT olarak yazdırın:
    mysqldump --skip-extended-insert -u kullanici -p veritabani > yedek.sql

    Beklenen sonuç: dosya büyür ama hiçbir sorgu tek satırdan uzun olmaz; içe aktarma sınıra takılmaz.

  2. phpMyAdmin’de dışa aktarmayı özel yöntemle yapın. Eski sunucudaki phpMyAdmin’de Dışa Aktar sekmesinde Özel yöntemi seçin ve veri oluşturma seçeneklerinde çoklu satır eklemeyi kapatın. Seçeneklerin açıklaması phpMyAdmin belgesinde.
  3. Büyük dosyayı parçalara bölün. Dosyayı tablo tablo dışa aktarın ve sırayla içe aktarın. Yöntem phpMyAdmin ile büyük veritabanı yükleme kartında.
  4. Tek satır sınırı aşıyorsa destek talebi açın. Veritabanında saklanan büyük bir dosya tek başına sınırı geçiyorsa sorgu bölünemez. Talebe tablo adını ve en büyük satırın boyutunu yazın.

VPS’te max_allowed_packet nasıl büyütülür

  1. Güncel değeri okuyun.
    mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"

    Beklenen sonuç: varsayılan kurulumda 16777216 (16 MB) görünür.

  2. Yapılandırma dosyasını düzenleyin. Ubuntu’da /etc/mysql/mariadb.conf.d/50-server.cnf, AlmaLinux’ta /etc/my.cnf.d/mariadb-server.cnf dosyasında [mysqld] bölümüne ekleyin:
    [mysqld]
    max_allowed_packet = 256M
  3. Hizmeti yeniden başlatın.
    sudo systemctl restart mariadb
  4. İstemci tarafını da büyütün. Komut satırından içe aktarırken aynı değeri istemciye verin:
    mysql --max-allowed-packet=256M -u kullanici -p veritabani < yedek.sql

Dikkat

Değeri gereğinden büyük tutmayın. Her bağlantı en çok bu kadar bellek ayırabilir; küçük bellekli bir sunucuda 1 GB gibi bir değer, eşzamanlı bağlantılarda belleği tüketebilir. Önce en büyük satıra yetecek değeri seçin.

Doğrulama

Sonuç

SHOW VARIABLES LIKE 'max_allowed_packet'; komutu yeni değeri gösteriyor ve içe aktarma hata vermeden bitiyorsa sorun giderilmiştir. Paylaşımlı hostingte doğrulama, içe aktarmanın bütün tabloları tamamlamasıdır; phpMyAdmin’de tablo sayısını eski veritabanıyla karşılaştırın.

Hâlâ çözülmediyse

  • Bağlantı içe aktarma ortasında kopuyor. Zaman aşımı da devrede olabilir; MySQL server has gone away kartındaki adımları uygulayın.
  • Dosya phpMyAdmin’e yüklenmiyor. Sınır veritabanında değil yükleme boyutundadır; değerler cPanel php.ini ayarları kartından büyütülür.
  • Uygulama aynı anda çok bağlantı açıyor. Hata bağlantı sayısıyla ilgiliyse Too many connections hatası kartına bakın.

Narhost desteği

Talebe şunları ekleyin: veritabanı adı, hata metni birebir, içe aktarılan dosyanın boyutu, hatayı veren tablo adı ve denediğiniz adımlar.

Destek talebi aç

Sıkça sorulan sorular

max_allowed_packet değeri kaç olmalı?

Veritabanındaki en büyük satıra ya da tek sorguya yetecek kadar. Çoğu WordPress ve e-ticaret sitesi için 64 MB yeterlidir; veritabanında büyük dosya saklayan uygulamalarda daha yüksek değer gerekir. Değer 1024’ün katı olmalı ve 1 GB’ı geçemez.

SET GLOBAL ile değiştirmek kalıcı olur mu?

Olmaz. SET GLOBAL yalnız yeni açılan bağlantıları etkiler ve sunucu yeniden başlayınca eski değere döner. Kalıcı değişiklik yapılandırma dosyasında yapılır.

Paylaşımlı hostingte değeri neden değiştiremiyorum?

Değişken sunucu genelinde ayarlanır ve oturum değeri salt okunurdur; bir hesabın değişikliği bütün hesapları etkilerdi. Bu yüzden çözüm sorguları küçültmek ya da gerekiyorsa destek ekibiyle görüşmektir.

Bu makale sorununuzu çözdü mü?

Çözemediniz mi?

Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.

Etiketler: mariadbphpmyadmin

İlgili çözümler