mysql - mysqlcheck 是否检查外键约束
问题描述
我正在阅读mysqlcheck
这里的文档,但我无法理解它是做什么的--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 约束编写选择。
推荐阅读
- windows - 检查当前网络连接是否在 Windows 批处理文件中计量
- c# - 这个循环是否有可能无法运行?
- https - 使用 HTTPS 请求发送数据及其成本
- sql - SQL 设置组内所有记录的值
- javascript - 滚动时根据线性渐变背景设置适当的元素颜色
- python-3.x - BeautifulSoup - find_all - 返回空列表
- react-native - 如何在 React Native 中按第一行对齐文本对象
- python - Musixmatch api 响应返回 200 但返回的 json 没有值
- cuda - 在 Cuda 中升级数据
- java - 在列表视图 [Android Studio] 中更新附近未配对的蓝牙设备列表