首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqlcheck是否检查外键是否约束

mysqlcheck是否检查外键是否约束
EN

Stack Overflow用户
提问于 2020-09-09 15:49:20
回答 1查看 26关注 0票数 2

我正在阅读mysqlcheck here的文档,但我不能理解--check是做什么的,我的意思是,我不能理解它检查什么错误(我只能找到Check the tables for errors. This is the default operation.)。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-09 19:45:20

我做过这样的测试:

代码语言:javascript
复制
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;

输出:

代码语言:javascript
复制
0
代码语言:javascript
复制
1
代码语言:javascript
复制
id
1
代码语言:javascript
复制
id
1
2
3

然后我运行了mysqlcheck

代码语言:javascript
复制
>mysqlcheck -c -u root testdb test2
testdb.test2                                     OK

所以我认为这个Check the tables for errors.意味着数据存储中的错误(低级),而不是数据一致性

运行CHECK TABLE test2会意外地产生相同的结果。

打开这项检查后,我找不到一种简单的方法来检查外键。似乎唯一要做的就是使用information_schema为所有FK约束编写selects。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63807018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档