Migration Hataları: İlk İzlenim
1. "Class 'CreateUsersTable' not found"
Çözüm:
Migration dosyasındaki sınıf adını doğru yazdığınızdan emin olun. Laravel, dosya adlarını da sınıf adıyla eşleştirir, bu yüzden sınıf adı ile dosya adı arasındaki uyumu kontrol etmek önemlidir.
Örnek olarak:
id();
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
2. "SQLSTATE[42S01]: Base table or view already exists"
Çözüm:
Eğer tabloyu sıfırlamak istiyorsanız, `php artisan migrate:reset` komutunu kullanarak tüm migration'ları sıfırlayabilirsiniz. Ancak veritabanınızda önemli veriler varsa, dikkatli olmalısınız.
php artisan migrate:reset
Alternatif olarak, yalnızca belirli migration'ı geri alabilirsiniz:
php artisan migrate:rollback
3. "Could not create directory for migration"
Çözüm:
Dosya izinlerinizi kontrol edin ve gerekirse doğru izinleri verin. Özellikle `storage` ve `bootstrap/cache` dizinlerinin yazılabilir olduğundan emin olun.
Linux sistemlerde şu komutu çalıştırarak gerekli izinleri verebilirsiniz:
chmod -R 775 storage bootstrap/cache
4. "SQLSTATE[HY000]: General error: 1005 Can't create table"
Çözüm:
İlk olarak, tablolarınızın sırasını kontrol edin. Yabancı anahtarları, ilişkili tablolar oluşturulmadan önce çalıştırmamaya özen gösterin.
Eğer hâlâ sorun çözülmediyse, ilişkiyi kontrol etmek için veritabanı türünüzü gözden geçirin. MySQL veritabanı kullanıyorsanız, genellikle `utf8mb4` karakter seti ve `utf8mb4_unicode_ci` karşılaştırma (collation) kullanmanız gerekebilir.
Örnek:
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
5. "Migration table not found"
Çözüm:
Migration tablosunu yeniden oluşturmak için şu komutu çalıştırabilirsiniz:
php artisan migrate:install
Bu komut, `migrations` tablosunu oluşturur ve Laravel'ın migration geçmişini takip etmesini sağlar.
Sonuç
Unutmayın, her zaman doğru dosya adlarına, izinlere ve sıralamalara dikkat edin. Böylece Laravel ile çalışırken migration hatalarını minimuma indirebilirsiniz.