1. Hata: `SQLSTATE[42000]: Syntax error or access violation: 1064`
Laravel migration işleminde en sık karşılaşılan hatalardan biri bu hatadır. Veritabanınızda yaptığınız değişiklikler sonucunda, çoğunlukla yanlış yazılmış SQL komutları nedeniyle bu hata ile karşılaşırsınız.
Bu hatayı aldığınızda, Laravel'in migration dosyasındaki SQL komutlarını kontrol etmeniz gerekir. Veritabanı yapılandırmasını doğru yaptığınızdan emin olun. Ayrıca, SQL komutlarını manuel olarak test edin ve hatayı bulmaya çalışın.
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
2. Hata: `Error: Cannot delete or update a parent row: a foreign key constraint fails`
Bu hata, bir tabloyu silmeye ya da güncellemeye çalışırken meydana gelir ve genellikle veritabanı ile ilgili bir dış anahtar (foreign key) kısıtlamasından kaynaklanır.
Veritabanınızda dış anahtar kısıtlamalarını doğru şekilde yapılandırdığınızdan emin olun. Erişim sağlanan tablonun, ilişkili tablo ile olan bağlarını kontrol edin. Eğer ilişkili tablodan bir veriyi silmek istiyorsanız, önce bu tabloyu güncelleyip sonra silme işlemi yapmayı deneyin.
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
3. Hata: `Migration table not found`
Migration tablosunun eksik olduğu hatasını aldığınızda, Laravel uygulamanızda migration komutları çalıştırılmadan önce bu tablonun mevcut olması gerektiğini unutmuş olabilirsiniz.
Bu hatayı alıyorsanız, genellikle bir migration işlemi yapılmadan önce Laravel'in kendi migration tablosunun veritabanında bulunmadığı anlamına gelir. Çözüm için, `php artisan migrate:install` komutunu çalıştırarak tablonun oluşturulmasını sağlayabilirsiniz.
php artisan migrate:install
4. Hata: `General error: 1005 Can't create table...`
Bu hata, genellikle veritabanı ilişkileri ve yabancı anahtar kısıtlamalarıyla ilgili bir sorundan kaynaklanır. Özellikle Laravel'de migration dosyaları arasında yanlış sıralama nedeniyle karşılaşabilirsiniz.
Eğer bu hatayı aldıysanız, migration dosyalarınızın sıralamasını kontrol etmelisiniz. Laravel, ilişkili tabloları doğru sırayla oluşturmalıdır. Eğer bu hatayı yine alıyorsanız, migration dosyanızda dış anahtarları kaldırarak her şeyi yeniden başlatmayı deneyebilirsiniz.
php artisan migrate:reset
5. Hata: `Error creating database for connection`
Laravel'de veritabanı bağlantı hatası alıyorsanız, bu genellikle `.env` dosyanızdaki bağlantı bilgileriyle ilgilidir. Veritabanı sunucusuna bağlanmaya çalışırken yanlış bilgi vermiş olabilirsiniz.
`.env` dosyanızı kontrol edin ve veritabanı bağlantı bilgilerinizi doğru şekilde girdiğinizden emin olun. Veritabanı adı, kullanıcı adı, şifre ve sunucu adresinin doğru olduğuna dikkat edin.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=root
DB_PASSWORD=secret
6. Hata: `Class 'CreateUsersTable' not found`
Bu hata, migration dosyanızda belirtilen sınıf adı ile dosya adının eşleşmemesi durumunda ortaya çıkar. Laravel, migration dosyalarındaki sınıf isimlerinin belirli bir formatta olmasını bekler.
Migration dosyanızın adını kontrol edin. Sınıf adı, dosya adıyla tam olarak eşleşmelidir. Eğer adlar uyumlu değilse, Laravel bu sınıfı bulamaz ve hata verir.
php artisan migrate:refresh
### Sonuç
Laravel ile migration işlemleri sırasında karşılaşılan hatalar, genellikle yanlış yapılandırmalardan kaynaklanır. Bu yazıda paylaşılan adımları izleyerek, karşılaştığınız hataları hızlıca çözebilir ve projelerinize kesintisiz bir şekilde devam edebilirsiniz. Laravel'in sunduğu güçlü migration sistemi sayesinde, veritabanı yapılandırmalarınızı rahatça yönetebilir ve veritabanı hataları ile başa çıkabilirsiniz.