如何解决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 举报,一经查实,本站将立刻删除。