MariaDB ERROR 4025 (23000): CONSTRAINT ...

MariaDB支持在 CREATE TABLEALTER TABLE 状态下数据表级别的约束( constraint )检查。这种 table constraint 检查可以在用户添加数据时防止输入错误数据,这样就可以在数据库级别强制执行数据完整性校验,而不是通过应用程序限制。当语句违反约束(contraint)时,MariaDB会抛出错误:

  • InnoDB引擎支持外键约束(foreign key constraints)

  • 通过表达式检查约束(例如限制输入数据的值大小范围)

  • 在bin log数据库复制: 当基于行日志(Row-Based Logging)复制时,检查主键(master)约束;当基于语句日志(Statement-Based Logging)复制时,还检查从键(slaves)

  • auto_increment 字段不支持约束检查

案例

在MariaDB中使用JSON 时,如果插入数据库的数据不是正确的JSON格式(可以使用 jq 工具校验),则会提示错误:

ERROR 4025 (23000): CONSTRAINT `users.details` failed for `mydb`.`users`

参考