3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated
MySQLNe 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.
Aynı motorda diğer kayıtlar
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text