ImportError This Is MySQLdb Version Hatası Nasıl Çözülür (Python/VPS)

Son gözden geçirme: Eylül 2026 · mysqlclient (PyMySQL/mysqlclient) ve Django resmi dokümanına göre

Hızlı çözüm

importerror this is mysqldb version hatası, kurulu mysqlclient paketinin Python tarafındaki sürüm bilgisiyle (MySQLdb/release.py) derlenmiş C uzantısının (_mysql) bildirdiği sürümün birbiriyle uyuşmamasından gelir; en sık neden sanal ortamda paketin yarım ya da karışık şekilde yükseltilmiş olmasıdır.

  1. Hangi sanal ortamda çalıştığınızı pip show mysqlclient ile doğrulayın.
  2. Hata mesajındaki _mysql: satırındaki dosya yolunu okuyup çakışan uzantıyı bulun.
  3. mysqlclient‘i sanal ortamda temiz olarak kaldırıp yeniden kurun.
  4. Sürümü python3 -c "import MySQLdb; print(MySQLdb.version_info)" ile doğrulayın.
Panel Yok (SSH / konsol)
Sistem VPS/VDS üzerinde Python + Django
Yetki Proje kullanıcısı (sanal ortam) · sistem paketleri için sudo
Narhost ürünü VPS Sunucu

Başlamadan önce

  • Bu hata yalnızca kendi Python ortamınızı kurduğunuz VPS/VDS’te görülür; paylaşımlı hostingde SSH ve kendi Python kurulumunuz olmadığı için karşınıza çıkmaz.
  • Hangi Python sürümünü ve hangi sanal ortam aracını (venv, virtualenv) kullandığınızı bilin.
  • Sunucunuza SSH ile bağlı olun; sunucunun içindeki Python ortamı ve paketler sizin sorumluluğunuzdadır, Narhost bu ortamı sizin adınıza kurmaz.
  • Prodüksiyon ortamındaysanız değişiklik öncesi requirements.txt çıktısını ve sanal ortamı yedekleyin.

Importerror this is mysqldb version hatası neden olur

mysqlclient paketinin kaynak kodunda (MySQLdb/__init__.py) bir kendi kendine tutarlılık denetimi vardır: paket, Python tarafındaki sürüm bilgisini (release.py içindeki version_info) derlenmiş _mysql uzantısının bildirdiği sürümle karşılaştırır; ikisi eşleşmezse ImportError: this is MySQLdb version (…), but _mysql is version (…) fırlatır ve hangi _mysql dosyasının çakıştığını da yazar. Bu, “sürümünüz eski” demek değildir; “kurulumunuz tutarsız” demektir.

En sık üç neden: sanal ortamda pip install --upgrade mysqlclient yarım kalmış ya da önbellekten eski bir derlenmiş uzantı kullanılmıştır; sistem genelinde (apt/sistem pip’i ile) kurulu bir mysqlclient/eski MySQL-python ile sanal ortamdaki farklı sürüm çakışmaktadır; ya da uygulama birden fazla Python sürümü (örnek python3.10 ve python3.12) arasında yanlış olanı çalıştırmaktadır. Bununla karışan ayrı bir hata da vardır: Django’nun kendi asgari sürüm denetimi, mysqlclient 2.2.1’den eskiyse farklı bir istisna (django.core.exceptions.ImproperlyConfigured) ve farklı bir metinle (“mysqlclient 2.2.1 or newer is required”) durur; bu, yukarıdaki ImportError ile aynı köke değil, Django’nun sürüm şartına bağlıdır.

Adım adım importerror this is mysqldb version hatasını çözme

  1. Sanal ortamı etkinleştirip mevcut kurulumu doğrulayın.
    source venv/bin/activate
    python3 -c "import MySQLdb; print(MySQLdb.version_info)"
    pip show mysqlclient

    Beklenen sonuç: pip show çıktısındaki Location satırı, aktif sanal ortamın site-packages yolunu göstermelidir; farklı bir yol görünüyorsa yanlış ortamdasınız demektir.

  2. Hata mesajındaki _mysql: satırını okuyun; orada gösterilen dosya yolu çakışan derlenmiş uzantının tam olarak nerede olduğunu gösterir.

    Beklenen sonuç: yol sanal ortamınızın dışındaysa (örnek sistem geneli site-packages) sanal ortamınız izole değildir; --system-site-packages bayrağı olmadan yeniden oluşturun.

  3. Gerekli sistem paketleri eksikse önce onları, ardından mysqlclient‘i sanal ortamda temiz olarak yeniden kurun.
    # Ubuntu / Debian
    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config
    pip install --force-reinstall --no-cache-dir mysqlclient
    # AlmaLinux / RHEL tabanlı
    sudo dnf install python3-devel mysql-devel pkgconfig
    pip install --force-reinstall --no-cache-dir mysqlclient

    Beklenen sonuç: kurulum hatasız biterse pip show mysqlclient güncel sürümü gösterir; hâlâ eski görünüyorsa önce pip uninstall mysqlclient ile paketi tamamen kaldırıp adımı tekrarlayın.

  4. Django’nun asgari sürüm şartını karşıladığınızı ayrıca doğrulayın; Django’nun resmi dokümanına göre 2.2.1 ve üzeri gerekir.
    python3 -c "import MySQLdb; print(MySQLdb.__version__)"

    Beklenen sonuç: sürüm 2.2.1 ya da üzeri olmalıdır; düşükse pip install -U mysqlclient ile yükseltin.

  5. mysqlclient‘i derleyemiyorsanız (eksik derleyici, kısıtlı ortam) geçici çözüm PyMySQL‘dür.
    pip install PyMySQL

    Projenizin ana __init__.py dosyasına ekleyin:

    import pymysql
    pymysql.install_as_MySQLdb()

    Beklenen sonuç: ImportError kalkar ve proje ayağa kalkar; ancak PyMySQL saf Python’dır, mysqlclient‘in C uzantısı kadar hızlı değildir ve tüm MySQLdb davranışını birebir taklit etmez. Bu bir köprüdür, kalıcı çözüm değildir; derleme sorununu çözüp mysqlclient‘e geçmek önerilir.

importerror this is mysqldb version hatasını çözme adımları şeması
Sürümü doğrulama, çakışan uzantıyı bulma, temiz kurulum ve sürüm teyidi adımları.

Doğrulama

Sonuç

Django projesinde python manage.py check çalıştırdığınızda ImportError çıkmıyor ve python3 -c "import MySQLdb" hatasız tamamlanıyorsa sorun çözülmüştür.

Hâlâ çözülmediyse

  • Sunucuda birden fazla Python sürümü kuruluysapip yanlış Python’a bağlı olabilir; pip install yerine python3 -m pip install biçimini kullanın ve doğru python3 ikilisini çağırdığınızı which python3 ile doğrulayın.
  • Hiç sanal ortam kullanmıyorsanız (sistem genelinde kurulum) çakışma ihtimali çok daha yüksektir; Django’yu ve bağımlılıklarını temiz bir sanal ortama taşımanız önerilir, gerekirse önce Django’yu sistemden kaldırma adımlarına bakın.
  • SSH ile sunucuya bağlanamıyorsanız önce SSH bağlantısı kartını izleyin.

Narhost desteği

VPS/VDS’te işletim sistemi, panel ve uygulama katmanı (Python, Django, sanal ortam dahil) sizin sorumluluğunuzdadır; Narhost sunucunuzda sizin adınıza komut çalıştırmaz. Talebe şunları ekleyin: işletim sistemi (Ubuntu/AlmaLinux), Python ve mysqlclient sürümü, sanal ortam aracı, tam hata çıktısı.

Destek talebi aç

Sıkça sorulan sorular

Importerror this is mysqldb version hatası paylaşımlı hostingde de çıkar mı?

Hayır. Paylaşımlı hostingde SSH erişimi ve kendi Python/Django ortamınız yoktur; bu hata yalnızca kendi Python uygulamanızı çalıştırdığınız VPS/VDS’te görülür.

Pip install mysqlclient neden derleme hatası veriyor?

Genellikle sistemde python3-dev/python3-devel, MySQL geliştirme başlıkları ve derleyici eksiktir; 3. adımdaki sistem paketlerini kurup tekrar deneyin.

PyMySQL’i install_as_MySQLdb() ile kalıcı olarak kullanabilir miyim?

Teknik olarak çalışır ama önerilmez; performans farkı ve MySQLdb API’sini birebir taklit etmemesi nedeniyle yalnızca mysqlclient‘i doğru kurana kadar geçici bir köprü olarak kullanın.

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: django

İlgili çözümler