我正在阅读mysqlcheck here的文档,但我不能理解--check是做什么的,我的意思是,我不能理解它检查什么错误(我只能找到Check the tables for errors. This is the default operation.)。
(我的目标是检查外键约束,因为我已经使用SET FOREIGN_KEY_CHECKS = 0;插入了一堆记录)
发布于 2020-09-09 19:45:20
我做过这样的测试:
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;输出:
01id
1id
1
2
3然后我运行了mysqlcheck
>mysqlcheck -c -u root testdb test2
testdb.test2 OK所以我认为这个Check the tables for errors.意味着数据存储中的错误(低级),而不是数据一致性
运行CHECK TABLE test2会意外地产生相同的结果。
打开这项检查后,我找不到一种简单的方法来检查外键。似乎唯一要做的就是使用information_schema为所有FK约束编写selects。
https://stackoverflow.com/questions/63807018
复制相似问题