微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysqlcheck是否检查外键约束

如何解决mysqlcheck是否检查外键约束

我正在阅读MysqLcheck here的文档,但我无法理解--check的含义,我的意思是,我无法理解它检查的是什么错误(我可以只找到Check the tables for errors. This is the default operation.)。

(我的目标是检查外键约束,因为我已经使用SET FOREIGN_KEY_CHECKS = 0;插入了一堆记录了)

解决方法

我已经完成了这项测试:

DROP TABLE test2;
DROP TABLE test1;

CREATE TABLE test1(id INT primary key)  ENGINE INNODB;
CREATE TABLE test2(
    id INT PRIMARY KEY,CONSTRAINT fk_test1 FOREIGN KEY (id) REFERENCES test1 (id)
) ENGINE INNODB;

INSERT INTO test1 VALUES (1);

SET FOREIGN_KEY_CHECKS = 0;
SELECT @@FOREIGN_KEY_CHECKS;

INSERT INTO test2 VALUES (1);
INSERT INTO test2 VALUES (2);
INSERT INTO test2 VALUES (3);

SET FOREIGN_KEY_CHECKS = 1;
SELECT @@FOREIGN_KEY_CHECKS;

-- INSERT INTO test2 VALUES (4);

SELECT * FROM test1;
SELECT * FROM test2;

输出:

0
1
id
1
id
1
2
3

然后我已经运行mysqlcheck

>mysqlcheck -c -u root testdb test2
testdb.test2                                     OK

所以我认为Check the tables for errors.表示数据存储错误(低级),而不是数据一致性

运行CHECK TABLE test2可以得到相同的结果。

启用此检查后,我找不到简单的方法来检查外键。似乎唯一要做的就是与information_schema一起为所有FK约束编写选择。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。