Aslında MySQL / PHP ile ne hataları ne tür

2 Cevap php

MySQL kullanarak web tabanlı bir uygulama üzerinde çalışıyorum ve ben geçmişte kullandım. Ben bir mySQL hatası görmedim sonra diğer kalkınma sürecinde bir şey - yani. kötü seçer oluşan - ama hangi tür hatalarla 'çalışma' onun bir zamanlar var mı?

Ben bir ekleme veya Seçenek başarısız görmedim - edebilir bunlar? Sözdizimi doğruysa, neden olur?

Ben çoğunlukla bir hata aslında occour yaparsa ne bulmaktan doğru bir göz ile bu soruyorum. Bir ekleme / güncelleştirme başarısız olursa, ikinci bir uyku ve tekrar denemek mi? Nasıl bir seçme hakkında? Kaç kere hemen vazgeçmeden önce?

EDIT: Maybe I asked this poorly, what I'm looking for is "How should I handle mySQL errors if and when they occour?". In every sample I've ever seen its to just die -- in a public application that seems very ugly. Is it worth retrying the command in a few seconds and then giving a error to the user and emailing the admin? Or just accept that a fatal error won't get fixed.

2 Cevap

Burada bile geliştirme ortamında çalışabilir, doğru yazılmış ve hangi SQL ifadeleri ile oluşabilecek hataların bir kaç örnek:

  • Duplicate key violation, bir INSERT ya da UPDATE. Bu bir PRIMARY KEY veya UNIQUE KEY başka bir satırda aynı değere bir sütun ayarı engeller vardır. Uyku bu düzeltmek için olası değildir, sen / güncelleme takıyor değerlerini değiştirmek gerekir.

  • Constraint violations böyle tatminsiz foreign key başvuruları veya NULL bir NOT NULL sütun ayarı olarak. Sen kısıtlamaları ihlal etmediği değerleri kullanarak ekleme / güncelleştirme gerekir. Eğer FK kısıtlama bildiriminde davranışı basamaklı tanımlandığı sürece hata yabancı anahtar bağımlılıkları sonuçları olan bir satır silme. Ayrıca bir sütunun veri türü için aralık dışında bir değer eklemek veya kullanarak güncelleştirmek için bir hata var.

  • SQL privileges gerçekleştirebileceğiniz işlemleri kısıtlayabilirsiniz.

  • SELECT Eğer uygulama kodla dinamik sorguları oluşturmak eğer bir hata vermek ve üretir sorgu kusurlu olabilir.

  • Birisi MySQL SQL MODE to be more strict. For example, some implicit data type conversions or permissive enforcement of the Single-Value Rule in GROUP BY sorguları başarısız olabilir değiştirirse daha önce çalışmış bir sorgu hata verebilir.

Bu, tüm proje kodlu nasıl bağlıdır. Bir seçme başarısız olup olmadığını size kodu sizin seçer nasıl performans meselesi olacaktır. Eğer düzgün veri sterilize mi? Bu MySQL ve PHP ile ilgili olduğundan, vb sunucu yapılandırmaları, çevre hakkında sorular getiriyor

Olası sorunları için birçok yolları vardır. Bu soru gerçekten ilk sizinle başlamak için tüm kurmak nasıl bilmeden cevap olamaz. Diğerleri gibi çok uzun, önbellek-sınırlar, ölü-kilitler, süren sorgular, potansiyel-konular ayrıntısına burada listelemek için çok fazla, çok fazla açık bağlantıları içerebilir.

Belki burada topluluk eminim kaliteli cevaplar sunmak için hızlı olurdu, vb sql-enjeksiyonları önlemek konusunda daha spesifik sorular ile dönmek verileri sterilize, karmaşık sorguları işlemek gerekir.