Ubuntu 20.04下eXtremeDB外键约束失效原因咨询
eXtremeDB嵌入式版本外键约束失效的原因及解决办法
核心原因:嵌入式模式默认关闭外键约束检查
eXtremeDB为适配嵌入式场景的性能需求,默认不会强制执行外键约束。这就导致你写的外键声明仅被语法解析,但实际未生效,数据库不会校验关联表的数据是否存在。
具体解决步骤
初始化数据库时启用外键支持
如果用C API初始化数据库,需要在mco_db_params_t结构体的flags字段中添加MCO_DB_FOREIGN_KEYS;如果通过SQL接口启动,连接时需指定FOREIGN_KEYS=ON参数,或者执行以下SQL开启约束检查:SET FOREIGN_KEY_CHECKS = 1;注意:该配置必须在创建表之前设置,否则已创建的表不会自动启用约束,需要重新执行建表语句。
确认外键约束已被注册
你提到元表中查询不到被引用列,说明外键未被数据库识别。启用外键支持后重新执行建表语句,再查询元表就能看到对应的外键关联信息。验证约束生效
重新建表后尝试插入那条无效数据,正常情况下会直接抛出外键约束违反的错误,这就说明约束已生效。
内容的提问来源于stack exchange,提问作者Xavier Z
相关产品推荐
相关产品推荐

