DBAtlas · Veritabanı operasyon atlası

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated

MySQL

Ne demek?

Eklemeye veya güncellemeye çalıştığınız satır, tabloda tanımlı bir CHECK constraint'ini ihlal ediyor. MySQL 8.0.16 ve sonrasında CHECK constraint'leri gerçekten uygulanır (önceki sürümlerde yok sayılıyordu).

Neden olur?

Sütun değeri, CHECK ifadesinde tanımlı koşulu sağlamıyor (ör. CHECK (fiyat >= 0) varken negatif fiyat girilmesi). Eski MySQL sürümlerinden 8.0.16+ sürümüne geçtikten sonra, önceden yok sayılan constraint'lerin artık zorlanmasıyla beklenmedik biçimde ortaya çıkabilir.

Nasıl çözülür?

Girilen değerin constraint koşulunu sağladığından emin olun; uygulama tarafında doğrulama ekleyin. Constraint'in tanımını görmek için: SHOW CREATE TABLE tablo; Constraint gerçekten gereksizse: ALTER TABLE tablo DROP CHECK kisit_adi; ya da geçici olarak ALTER TABLE tablo ALTER CHECK kisit_adi NOT ENFORCED; Yanlış verinin kaynağını da düzeltin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar