# phpMyAdmin'de büyük veritabanı içe aktarma hataları ve çözümleri

https://kervanhosting.com/bilgi-bankasi/makale/phpmyadmin-buyuk-veritabani-iceri-aktarma-hatalari-ve-cozumleri

Eski sitenizden aldığınız ya da yedekten çıkardığınız `.sql` dosyasını phpMyAdmin'e yüklemeye çalışıyorsunuz ve yarıda kesiliyor: "Script zaman aşımına uğradı", dosya boyutu uyarısı ya da boş bir sayfa. Bu, veritabanı yönetim aracının tarayıcı üzerinden çalıştığı ve PHP'nin sınırlarına tabi olduğu için olur. Büyük veritabanlarını aktarmanın birkaç güvenilir yolu vardır.

## Önce sınırları bilin

Hosting sunucumuzda PHP'nin dosya yükleme sınırı 100 MB, bir betiğin çalışma süresi 60 saniyedir. Dolayısıyla 100 MB'ı aşan dosya doğrudan yüklenmez; 100 MB'tan küçük ama büyük bir dosya ise 60 saniyeye sığmayıp zaman aşımına uğrayabilir.

## 1. Dosyayı sıkıştırın (gzip)

phpMyAdmin, `.sql.gz` ve `.zip` dosyalarını doğrudan içe aktarabilir. SQL metin dosyaları çok iyi sıkışır (çoğu zaman 5 ila 10 kat küçülür); 400 MB'lık bir döküm 50 MB'a inebilir. Eski sunucudan dışa aktarırken phpMyAdmin'de **Sıkıştırma: gzip** seçin ya da komut satırında `mysqldump ... | gzip > yedek.sql.gz` kullanın. Yükleme sınırı sıkıştırılmış dosya boyutuna uygulanır.

## 2. Dosyayı parçalara bölün

Sıkıştırılmış hâli hâlâ büyükse ya da süre yetmiyorsa, dışa aktarırken tabloları gruplar halinde ayrı dosyalara alın (phpMyAdmin'de **Özel** dışa aktarma ile birkaç tablo seçin). Bu, her yüklemeyi 60 saniyenin altında tutar. Her tablo grubunu sırayla içe aktarın. Çok büyük tek tablo varsa bilgisayarınızda bir betikle (`split` komutu ya da "SQL splitter" araçları) satır sınırlarında bölünmüş parçalara ayırın; `INSERT` ifadelerini ortadan kesmeyin.

## 3. İçe aktarma ayarlarını gevşetin

İçe aktarma ekranında şu seçenekler işe yarar:

- **Kısmi içe aktarma > "Betik çalışma süresi dolarsa yeniden başlatmaya izin ver":** İşaretlediğinizde phpMyAdmin süre dolunca kaldığı yerden devam etmeyi önerir. Çoğunlukla büyük dosyalar bununla biter.
- **Karakter kümesi** dosyanınkiyle aynı olsun (genelde `utf-8`). Yanlışsa Türkçe karakterler bozulur.
- **"Yabancı anahtar kontrolünü etkinleştir"** işaretini kaldırmak, tablolar karışık sırayla geldiğinde hataları önler (içe aktarma bittikten sonra bütünlüğü kontrol edin).

## 4. Sunucuya komut satırıyla

Çok büyük veritabanlarında (yüzlerce MB üzeri) en güvenilir yol sunucuya doğrudan `mysql < yedek.sql` ile yüklemektir. Hosting hesabında terminal erişimi olmadığı için bu yol sizde yoktur. Böyle bir durumda destek talebi açıp dosya boyutunu ve veritabanı adını yazın; ne yapılabileceğine birlikte bakarız. VDS'te bu işi kendiniz yaparsınız: [MySQL ve MariaDB kurulumu](https://kervanhosting.com/bilgi-bankasi/makale/mysql-mariadb-veritabani-nasil-kurulur-ve-guvenli-kullanilir).

## Sık hatalar

- **#1044 / #1045 Access denied:** Seçili veritabanı sizin değil ya da kullanıcıya yetki verilmemiş. Dosyada `CREATE DATABASE` ya da `USE eskiadi;` satırı varsa, hostingdeki veritabanı adı farklı olduğu için çalışmaz. Dosyayı metin düzenleyicide açıp bu satırları silin; ayrıca tablolar yeni veritabanına yazılır.
- **#1062 Duplicate entry:** Veritabanında zaten aynı kayıtlar var. Önce hedef veritabanını boşaltın (tüm tabloları silin) ya da dosyada `DROP TABLE IF EXISTS` satırlarının bulunduğundan emin olun.
- **#1064 sözdizimi hatası:** Dosya yarım yüklenmiş ya da kesilmiştir ya da sürümler arasında uyumsuzluk vardır. Dosyanın tam indiğini boyutuna bakarak doğrulayın.
- **Boş/beyaz sayfa:** PHP süre ya da bellek sınırı aşıldı. Parçalara bölün, sıkıştırın.
- **Türkçe karakterler bozuk:** Karakter kümesi uyumsuzluğu; dosyayı `utf-8` olarak yeniden dışa aktarın.

Bu adımlar site taşıma sürecinin parçasıdır: [başka hostingten taşıma](https://kervanhosting.com/bilgi-bankasi/makale/baska-hostingden-bu-hostinge-site-tasima-dosya-ve-veritabani). İçe aktarma bittikten sonra sitenizin yapılandırma dosyasındaki veritabanı bilgilerini güncelleyin.

## Sık sorulanlar

### Yükleme sırasında tarayıcıyı kapatabilir miyim?

Hayır; phpMyAdmin tarayıcı üzerinden çalıştığı için sekmeyi kapatırsanız işlem durur. Büyük dosyaları parçalayın ki her biri kısa sürsün.

### İçe aktardığım tablolar eksik çıktı.

Dosya yarım kalmış olabilir. Tablo sayısını ve satır sayılarını eski veritabanıyla karşılaştırın; eksik varsa ilgili parçayı yeniden yükleyin.

### Hosting'de veritabanı boyut sınırım var mı?

Toplam depolama kotası hosting paketinizin disk alanına sayılır (veritabanı dosyaları da diskte yer kaplar). Kotanızı aşarsanız yazma işlemleri başarısız olur.

**İlgili makaleler**

- [Başka hostingten bize site taşıma: dosyalar, veritabanı ve DNS](https://kervanhosting.com/bilgi-bankasi/makale/baska-hostingden-bu-hostinge-site-tasima-dosya-ve-veritabani)
- [Hosting'de veritabanı (MySQL) nasıl oluşturulur? phpMyAdmin nasıl açılır?](https://kervanhosting.com/bilgi-bankasi/makale/hosting-paketimde-veritabani-mysql-ve-phpmyadmin)
- [Hosting'de PHP ayarlarını değiştirme: memory_limit, upload boyutu, .user.ini](https://kervanhosting.com/bilgi-bankasi/makale/hosting-php-ayarlari-memory-limit-upload-boyutu-user-ini)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
